1、网络请求;
2、切换主题,全局Store的使用;
3、broadcast的使用;
主题切换和全局store的使用:
这里在个人中心加了一个简单的切换夜间模式的功能,需要一个全局的Store这里直接是使用fish-redux的example中的global_store包里的东西,只是把themeColor换成自己定义的主题,至于初始化咱就在创建的地方初始化一下数据,如下代码:
class GlobalStore {
static Store _globalStore;
static Store get store {
return _globalStore ??= createStore(
GlobalState()..appTheme = AppTheme.getInstance(false), buildReducer());
}
}
入口页也需要改造成fish-redux的方式,直接新建一个page就是,这个新建方式在之前的博客有提到,是他们团队提供的插件,这里就不在多做介绍了,如下代码:
Widget buildView(MainState state, Dispatch dispatch, ViewService viewService) {
return MaterialApp(
title: 'Flutter Demo',
theme: state.appTheme.dark ? darkTheme : lightTheme,
home: routes.buildPage('home', null),
routes: appRoutes,
onGenerateRoute: (RouteSettings settings) {
return MaterialPageRoute(builder: (BuildContext context) {
return routes.buildPage(settings.name, settings.arguments);
});
},
);
}
这里的darkTheme 和 lightTheme都在AppTheme中。
还需要在一个地方处理一下这个store,如下所示:
import 'package:fish_redux/fish_redux.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'constant/theme.dart';
import 'global_store/state.dart';
import 'global_store/store.dart';
import 'home/index/page.dart';
import 'home/index/page/page.dart';
import 'home/mine/page.dart';
import 'home/page.dart';
import 'home/smart/page.dart';
import 'page.dart';
import 'radio/page.dart';
Map appRoutes = {
'/home': (BuildContext context) => routes.buildPage("home", null),
'/main': (BuildContext context) => routes.buildPage("main", null),
'/radioDetail': (BuildContext context) =>
routes.buildPage("radioDetail", null),
};
var routes = new PageRoutes(
pages: >{
'home': HomePage(),
'main': MainPage(),
'index': IndexPage(),
'smart': SmartPage(),
'mine': MinePage(),
'indexTab': TabPage(),
'radioDetail': RadioDetailPage(), //电台详情页
},
visitor: (String path, Page page) {
/// XXX
if (page.isTypeof()) {
page.connectExtraStore(GlobalStore.store,
(Object pageState, GlobalState appState) {
final GlobalBaseState p = pageState;
if (p.appTheme == appState.appTheme) {
return pageState;
} else {
if (pageState is Cloneable) {
final Object copy = pageState.clone();
final GlobalBaseState newState = copy;
newState.appTheme = appState.appTheme;
return newState;
}
}
});
}
page.enhancer.append(
viewMiddleware: >[safetyView()],
adapterMiddleware: >[safetyAdapter()],
effectMiddleware: [_pageAnalyticsMiddleware()],
middleware: >[logMiddleware()],
);
},
);
/// 简单的Effect AOP
/// 只针对页面的生命周期进行打印
EffectMiddleware _pageAnalyticsMiddleware({String tag = 'redux'}) {
return (AbstractLogic logic, Store store) {
return (Effect effect) {
return (Action action, Context ctx) {
if (logic is Page && action.type is Lifecycle) {
print('${logic.runtimeType} ${action.type.toString()} ');
}
return effect?.call(action, ctx);
};
};
};
}
Future appPushRoute(String path, BuildContext context,
{Map params}) async {
return await Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => routes.buildPage(path, params)));
}
Future appPushRemoveRoute(String path, BuildContext context,
{Map params}) async {
return await Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(
builder: (BuildContext context) => routes.buildPage(path, params)),
ModalRoute.withName(path));
}
Future appPushNameRoute(String path, BuildContext context) async {
return await Navigator.of(context).pushNamed(path);
}
这里其实也是在fish-redux上复制的,其实就是遍历所有page判断theme是否改变,改变了就重新clone赋值。
然后在你要用到的地方的State的实现GlobalBaseState,这个抽象类,如下所示:
abstract class GlobalBaseState {
AppTheme get appTheme;
set appTheme(AppTheme appTheme);
}
这个AppTheme类是我自己定义的,其实就是我们主题切换时对应的字体颜色等样式,这里就不贴出来了,下面有代码地址,大家可以自行clone跑一下。
这里列出来一个我实现这个GlobalBaseState的类,个人中心的State类,如下所示:
class MineState implements GlobalBaseState, Cloneable {
bool darkOn;
bool gridOn;
@override
MineState clone() {
return MineState()
..appTheme = appTheme
..darkOn = darkOn
..gridOn = gridOn;
}
@override
AppTheme appTheme;
}
MineState initState(Map args) {
return MineState()
..gridOn = false
..darkOn = Constants.dark;
}
其实就是实现一下,然后在clone加上这个apptheme就行了,
调用切换主题如下代码:
Widget buildView(MineState state, Dispatch dispatch, ViewService viewService) {
return ListView(
children: [
ListTile(
leading: Icon(Icons.brightness_2),
title: Text('夜间模式', style: state.appTheme.titleStyle),
trailing: Switch(
value: state.darkOn,
onChanged: (value) {
print("onchange---------$value");
GlobalStore.store
.dispatch(GlobalActionCreator.onchangeThemeColor(value));
dispatch(MineActionCreator.changeThemeAction(value));
dispatch(MineActionCreator.changeThemeEffect(value));
}),
),
ListTile(
leading: Icon(Icons.grid_on),
title: Text('GridView显示', style: state.appTheme.titleStyle),
trailing: Switch(
value: state.gridOn,
onChanged: (value) {
dispatch(MineActionCreator.changeGridAction(value));
}),
)
],
);
}
改变主题时候有个坑,不知道是不是我的方式不对还是咋的,理论上调用 GlobalStore.store .dispatch(GlobalActionCreator.onchangeThemeColor(value));就可以,但是我这里主题是切换了,但是我这列表每个Item文字颜色等都没改变,所以改成另外一种方式了。
这里我们可以看到我直接在这里还调用了其他方法,这里起作用的是这dispatch(MineActionCreator.changeThemeEffect(value));
我把这个action发送的 个人中心的effect里,如下所示:
Effect buildEffect() {
return combineEffects(>{
MineAction.changeGridAction: _changeGridAction,
MineAction.changeThemeEffect: __changeThemeEffect,
});
}
void _changeGridAction(Action action, Context ctx) {
SPUtils.save("gridOn", action.payload);
ctx.dispatch(MineActionCreator.changeGridValue(action.payload));
ctx.broadcast(MineActionCreator.changeGridValue(action.payload));
}
void __changeThemeEffect(Action action, Context ctx) {
SPUtils.save("dark", action.payload);
ctx.broadcast(MineActionCreator.changeThemeAction(action.payload));
}
就是这个方法__changeThemeEffect接收到view中action然后我在这里发一个广播,我只要在item中注册这个广播就可以收到改变主题的action了,这里本来打算直接注册在reducer中的,但是发现不起作用所以最后注册到effect中才能接收到,如下代码:
Effect buildEffect() {
return combineEffects(>{
ItemAction.onItemClick: _onItemClick,
MineAction.changeThemeAction: _changeThemeAction,
});
}
void _onItemClick(Action action, Context ctx) {
Channel channel = action.payload;
if (ctx.state.channel.channelid == channel.channelid) {
print(channel.ch_name);
appPushRoute('radioDetail', ctx.context,
params: {"title": channel.name, "name": channel.ch_name});
}
}
void _changeThemeAction(Action action, Context ctx) {
SPUtils.get("dark").then((res) {
print("get dark $res");
ctx.dispatch(TabActionCreator.changeThemeAction(res != null && res));
});
}
因此我这里还需要发一次action才能改变每个item的颜色,感觉比较麻烦,不知道大家还有没有更好的办法实现,如果有的话希望大神提供一下思路,小弟不胜感激。
流程差不多就这样了,大家可以直接clone代码,跑一下就可以看到效果了。后续还会介绍我在用flutter开发app过程种,Android和苹果遇到的问题,以及两个平台上插件的问题
传送门:demo
你可能感兴趣的:(flutter)
每天一个Flutter开发小项目 (3) : 高效Flutter学习与产出 - 构建简易天气应用
Neo Evolution
Flutter 前端框架 android 学习 flutter
引言欢迎回到每天一个Flutter开发小项目系列博客!在前两篇博客中,我们分别构建了计数器应用和待办事项列表应用,相信您已经对Flutter开发有了一定的基础认识。今天,我们将更进一步,探讨如何更高效地学习Flutter,并构建一个更有意思的小项目——简易天气应用。高效学习是提升技能的关键。尤其是在快速发展的技术领域,掌握高效的学习方法能够帮助我们更快地适应新技术、解决新问题,并最终提升开发效率和
每天一个Flutter开发小项目 (5) : 专业Flutter导航与路由 - 构建精美菜谱应用
Neo Evolution
flutter javascript 前端 前端框架 学习
引言欢迎再次回到每天一个Flutter开发小项目系列博客!在前四篇博客中,我们逐步深入Flutter的世界,从基础的计数器、实用的待办事项列表,到联网的天气应用和状态管理的地点收藏应用,相信您已经对Flutter开发有了扎实的基础。随着应用功能的不断扩展,页面间的跳转与数据传递变得至关重要。一个优秀的Flutter应用,不仅要有精美的UI和强大的功能,更要有流畅自然的导航体验。今天,我们将聚焦Fl
【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container 我们先来看一下Container初始化的参数:
m0_54072730
flask
Container({Keykey,//位置居左、居右、居中this.alignment,//EdgeInsetsContainer的内边距this.padding,//背景颜色this.color,//背景装饰器this.decoration,//前景装饰器this.foregroundDecoration,//宽度doublewidth,//告诉doubleheight,//约束BoxCons
每天一个Flutter开发小项目 (4) : 构建收藏地点应用 - 深入Flutter状态管理
Neo Evolution
Flutter flutter javascript 前端 开发语言 android
引言欢迎回到每天一个Flutter开发小项目系列博客!在前三篇博客中,我们从零开始构建了计数器应用、待办事项列表应用,以及简易天气应用。您不仅掌握了Flutter的基础组件和布局,还学习了网络请求、JSON解析等实用技能,更重要的是,我们一起探讨了高效的Flutter学习方法。随着应用功能的日益丰富和复杂,简单的setState状态管理方式逐渐显得力不从心。当应用状态需要在多个Widget之间共享
一周掌握Flutter开发--4、导航与路由
江上清风山间明月
Flutter flutter android 路由 导航 onGenerateRoute Navigator.push Navigator.pop
文章目录4.导航与路由核心功能4.1基础跳转:`Navigator.push`和`Navigator.pop`4.2命名路由:`routes`和`onGenerateRoute`4.3路由传参和返回结果推荐工具:`go_router`4.4`go_router`的使用总结*4.导航与路由导航与路由是Flutter应用中管理页面跳转的核心功能。Flutter提供了多种方式来实现页面导航,从简单的跳转
码上用它开始Flutter混合开发——FlutterBoost
阿里云云栖号
native 容器
为什么要混合方案具有一定规模的App通常有一套成熟通用的基础库,尤其是阿里系App,一般需要依赖很多体系内的基础库。那么使用Flutter重新从头开发App的成本和风险都较高。所以在NativeApp进行渐进式迁移是Flutter技术在现有NativeApp进行应用的稳健型方式。闲鱼在实践中沉淀出一套自己的混合技术方案。在此过程中,我们跟GoogleFlutter团队进行着密切的沟通,听取了官方的
flutter_boost接入及分析
Huang兄
Flutter android android dart flutter fluter boost
2019-09-12文章目录集成过程添加依赖在flutter_nodule侧在原生Android侧尝试flutter_boost流程在flutter中打开flutter或者原生在flutter中关闭页面flutter_boost地址:https://github.com/alibaba/flutter_boost集成之后的项目地址:https://github.com/huangyuanlove/
flutter: table calendar笔记
蜉蝣之翼❉
flutter 笔记
pubdev:table_calendar3.2.0我来详细解释TableCalendar是如何根据不同的CalendarFormat来显示界面的。主要逻辑在CalendarCore中实现。核心逻辑分为以下几个部分:页面数量计算-_getPageCount方法根据不同格式计算总页数:int_getPageCount(CalendarFormatformat,DateTimefirst,DateTi
Flutter接入FlutterBoost进行跳转,并实现Flutter与Native的通信
氦客
跨平台移动开发 Flutter FlutterBoost Android 接入 跳转
FlutterBoost是什么FlutterBoost是阿里系闲鱼技术团队开源的Flutter插件。FlutterBoost的理念是将Flutter像Webview那样来使用。在现有应用程序中同时管理Native页面和Flutter页面并非易事,FlutterBoost帮你处理页面的映射和跳转,使你只需关心页面的名字和参数即可(通常可以是URL)。如何接入FlutterBoost一般参考Flutt
Flutter 运行新项目时报错 Build failed due to use of deprecated Android v1 embedding.(已解决)
--程
flutterBug android flutter
问题描述:构建flutter项目时错误了这个错误:BuildfailedduetouseofdeprecatedAndroidv1embedding。问题原因:使用了flutterv2的sdk编译项目,而你的项目是旧的v1时候开发的。解决方法:第一步先/android/app/src/main下的找到AndroidManifest.xml文件第二步修改application标签删除name字段值并
Smooth Page Indicator 项目教程
蓬玮剑
SmoothPageIndicator项目教程smooth_page_indicatorFlutterSmoothPageViewindicators项目地址:https://gitcode.com/gh_mirrors/smo/smooth_page_indicator1.项目的目录结构及介绍SmoothPageIndicator项目的目录结构如下:smooth_page_indicator/├
Flutter开发者必备面试问题与答案02
flutter
Flutter开发者必备面试问题与答案02视频https://youtu.be/XYSxTb0iA9Ihttps://www.bilibili.com/video/BV1Zk2dYyEBr/前言原文Flutter完整面试问题及答案02本文是flutter面试问题的第二讲,高频问答10题。正文11.PageRoute是什么?在Flutter中,PageRoute是一个用于管理应用中页面导航的抽象类。
提升 Flutter 代码质量的技巧与实践
flutter
提升Flutter代码质量的技巧与实践视频https://youtu.be/0ZxBj-lG9Z8https://www.bilibili.com/video/BV1jztoeDEeB/前言原文提升Flutter代码质量的技巧与实践本文总结了Flutter开发中的编码技巧与最佳实践,帮助开发者提升代码质量和应用性能,无论是初学者还是经验丰富的开发者都能从中受益。这些技巧和规则只是对你的编码提供建议
Flutter开发者必备面试问题与答案05
flutter
Flutter开发者必备面试问题与答案05视频https://youtu.be/gl0a4QD6KYMhttps://www.bilibili.com/video/BV1RvyZYgEaH/前言原文Flutter完整面试问题及答案05本文是flutter面试问题的第五讲。正文41.FirestoregetDocuments()与snapshots()之间的区别?在Flutter中,getDocum
Flutter开发者必备面试问题与答案06
flutter
Flutter开发者必备面试问题与答案06视频https://youtu.be/a1NAfSQrpIghttps://www.bilibili.com/video/BV1g71KYREBN/前言原文Flutter完整面试问题及答案06本文是flutter面试问题的第六讲。正文51.定义什么是AppState?在Flutter中,AppState(应用状态)指的是应用在运行时的所有数据和信息,这些数
Flutter开发者必备面试问题与答案01
flutter
Flutter开发者必备面试问题与答案01视频https://youtu.be/MtEhJSxO0schttps://www.bilibili.com/video/BV14V2bYSEb7/前言原文Flutter完整面试问题及答案01本文汇总了Flutter开发面试中常见的问题及详尽的答案,帮助开发者全面准备面试,提升求职成功率。这些问题和答案来自互联网上的不同资源,如stackoverflow、
Flutter开发者必备面试问题与答案03
flutter
Flutter开发者必备面试问题与答案03视频https://youtu.be/rDrn2S6UWnkhttps://www.bilibili.com/video/BV1TeyBYgE3V/前言原文Flutter完整面试问题及答案03本文是flutter面试问题的第三讲,高频问答10题。正文21.AspectRatio组件有什么作用?在Flutter中,AspectRatio小部件用于控制其子小部
Flutter 单例模式技巧与最佳实践
flutter
Flutter单例模式技巧与最佳实践视频https://youtu.be/9kRw-4Rg8tchttps://www.bilibili.com/video/BV1EsxLeAEWx/前言原文Flutter单例模式技巧与最佳实践在Flutter开发中,单例模式是一种重要的设计模式,能够有效管理共享资源和全局状态。通过实现单例模式,开发者可以确保只有一个实例存在,从而优化应用性能和代码结构。本文探讨
Flutter 中使用 Mixin 优化逻辑与功能
flutter
Flutter中使用Mixin优化逻辑与功能视频https://youtu.be/xyHd7gUbBo4https://www.bilibili.com/video/BV1qDrBYmELq/前言原文FlutterMixins的规范设计与应用实例本文详细介绍了Flutter中的mixin概念,包括其特点、使用场景以及如何有效地在多个类之间共享代码。了解如何利用mixin实现功能模块化,避免代码重复
flutter 控件加一个边框,还是渐变的
氤氲息
flutter flutter 前端 javascript
最外层用一个渐变的背景,然后用padding:constEdgeInsets.all(1)就可以了Container(padding:constEdgeInsets.all(1),decoration:BoxDecorationUtil().setColumnGradientBoxDecoration(constColor(0x7F01FFF8),CommonColors.getColor1E1F
Flutter 的Column中包含ListView且listview是动态高度
weixin_41367871
Flutter flutter
ListView.builder(//列表会根据其内容的大小来决定自身的尺寸,而不是填满可用空间。//适用于列表高度需要自适应内容,或者列表嵌套在其他滚动视图中(如在Column中嵌套ListView)。shrinkWrap:true,//创建不允许用户滚动的滚动。禁止使用listview的滚动,应该使用外部的滚动physics:constNeverScrollableScrollPhysics(
Flutter动画实战指南:打造灵动界面的渐变色动画教程
Coderabo
Flutter框架详解 flutter ui
在Flutter的世界里,动画是提升用户体验不可或缺的一环。无论是简单的渐变效果,还是复杂的过渡动画,Flutter提供了强大的动画API来帮助开发者轻松实现这些效果。本文将深入探讨Flutter中的动画工作原理,并通过一个完整的示例展示如何在Flutter应用中使用动画工作函数,让您的界面动起来。动画基础与概念Flutter中的动画主要基于ticker和controller的概念。Ticker是
Flutter ---- 渐变边框
菲阿菲
Flutter flutter
如何给边框加渐变?在Container()外面套一个Container(),加上padding:EdgeInsets.all(),就可以,all()中写边框的大小。注意:child:中的Container(),padding正常写,margin属性写在父级Container()中Container(padding:EdgeInsets.all(1.0),decoration:BoxDecorati
Flutter滚动布局嵌套高度自适应和滑动冲突处理
qq_28051795
Flutter
在SingleChildScrollView中嵌套ListView,如果不指定ListView高度的话会报错,类似这样的════════Exceptioncaughtbyrenderinglibrary═════════════════════════════════════════════════════Thefollowingassertionwasthrownduringpaint():Re
Flutter-Android编译报错与解决方案汇总
ShawnRacine
flutter android
报错一:java.lang.NullPointerException:Cannotinvoke“String.length()”because“”isnull解决方案:IsolvedthisproblembyupgradingAndroidGradlePlugintoversion8.3.1.YoucanuseTools->AGPUpgradeAssistanttoupgradeAndroidGr
Flutter布局分析
2401_84537540
程序员 flutter
实际使用由于篇幅有限,常见现象和解决办法:1.如果Row里面嵌套Row,或者Column里面再嵌套Column,那么只有对最外面的Row或Column会占用尽可能大的空间,里面Row或Column所占用的空间为实际大小,如果要让里面的Colum或Row占满外部Colum或Row,可以使用Expandedwidget2.如果使用Column发现超范围,可用SingleChildScrollView包
关于在mac中配置Java系统环境变量
我要最优解
macos java flutter
引言在macOS上开发Java或Flutter应用时,正确配置环境变量是至关重要的。环境变量不仅能让系统找到开发工具的位置,还能简化命令行操作。本文将手把手教你从零开始安装JavaSDK,并详细配置环境变量,涵盖常见问题解决和优化技巧。在macOS系统中配置Java环境变量的详细步骤如下:一、配置Java环境变量1.安装JavaJDKmacOS默认可能未安装JDK(或版本较旧),以下是两种安装方式
SQLite基础语法速用大法(Flutter)
哇哇 · 刘
笔记 sqlite 数据库
前记(可跳过这段来自本up的罗里吧嗦。。。)在做上一个项目的时候,需要用到本地数据库,以前做公司项目用的是轻量级数据库Realm,做自己小项目用的是greenDAO,大学学的是SQLserver,但是在flutter中,相关插件用的数据库是SQLite(sqflite插件),但本人还没接触过SQLite,问了后台同事,他们用的也是SQLite,说大同小异,我就想着仅凭大学记忆,快速过一遍SQLit
全栈跨平台组件vue、tauri、blazor、maui、flutter对比,rust、py微服务架构可行性分析
垣宇
开发语言 vue.js rust node.js python javascript 系统架构 微服务
在实际开发中,要考虑前端页面展示的美观性,个人定制化需求;同时要考虑服务器端处理可能遇到的情况,如响应处理时间,跨域代理,高并发数据处理,怎么样合理利用服务端资源等问题。下面搜集对比市场比较主流的前端组件库/框架,及与后端搭配的可行性研究。一.前端组件库/框架1.vue.js组件Vue.js是一个渐进式JavaScript框架,易于上手,同时也能支持复杂的应用开发。安装nodejs前置安装可参考:
Flutter 3.29.0 CupertinoSliverNavigationBar 用于创建 iOS 风格可滚动导航栏的组件
早起的年轻人
Flutter3.29 Flutter项目开发全套教程 flutter ios
CupertinoSliverNavigationBar是Flutter中用于创建iOS风格可滚动导航栏的组件【公众号biglead】。2025年2月12日:3.29.0发布。3.29.0中新增的特性CupertinoNavigationBar和CupertinoSliverNavigationBar现在接受底部小部件,通常是搜索字段或分段控件。在CupertinoSliverNavigation
HttpClient 4.3与4.3版本以下版本比较
spjich
java httpclient
网上利用java发送http请求的代码很多,一搜一大把,有的利用的是java.net.*下的HttpURLConnection,有的用httpclient,而且发送的代码也分门别类。今天我们主要来说的是利用httpclient发送请求。
httpclient又可分为
httpclient3.x
httpclient4.x到httpclient4.3以下
httpclient4.3
Essential Studio Enterprise Edition 2015 v1新功能体验
Axiba
.net
概述:Essential Studio已全线升级至2015 v1版本了!新版本为JavaScript和ASP.NET MVC添加了新的文件资源管理器控件,还有其他一些控件功能升级,精彩不容错过,让我们一起来看看吧!
syncfusion公司是世界领先的Windows开发组件提供商,该公司正式对外发布Essential Studio Enterprise Edition 2015 v1版本。新版本
[宇宙与天文]微波背景辐射值与地球温度
comsci
背景
宇宙这个庞大,无边无际的空间是否存在某种确定的,变化的温度呢?
如果宇宙微波背景辐射值是表示宇宙空间温度的参数之一,那么测量这些数值,并观测周围的恒星能量输出值,我们是否获得地球的长期气候变化的情况呢?
&nbs
lvs-server
男人50
server
#!/bin/bash
#
# LVS script for VS/DR
#
#./etc/rc.d/init.d/functions
#
VIP=10.10.6.252
RIP1=10.10.6.101
RIP2=10.10.6.13
PORT=80
case $1 in
start)
/sbin/ifconfig eth2:0 $VIP broadca
java的WebCollector爬虫框架
oloz
爬虫
WebCollector主页:
https://github.com/CrawlScript/WebCollector
下载:webcollector-版本号-bin.zip将解压后文件夹中的所有jar包添加到工程既可。
接下来看demo
package org.spider.myspider;
import cn.edu.hfut.dmic.webcollector.cra
jQuery append 与 after 的区别
小猪猪08
1、after函数
定义和用法:
after() 方法在被选元素后插入指定的内容。
语法:
$(selector).after(content)
实例:
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></scr
mysql知识充电
香水浓
mysql
索引
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。
根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。
大多数存储引擎有更高的限制。MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;
MYISAM和InnoDB存储引擎
我的架构经验系列文章索引
agevs
架构
下面是一些个人架构上的总结,本来想只在公司内部进行共享的,因此内容写的口语化一点,也没什么图示,所有内容没有查任何资料是脑子里面的东西吐出来的因此可能会不准确不全,希望抛砖引玉,大家互相讨论。
要注意,我这些文章是一个总体的架构经验不针对具体的语言和平台,因此也不一定是适用所有的语言和平台的。
(内容是前几天写的,现附上索引)
前端架构 http://www.
Android so lib库远程http下载和动态注册
aijuans
andorid
一、背景
在开发Android应用程序的实现,有时候需要引入第三方so lib库,但第三方so库比较大,例如开源第三方播放组件ffmpeg库, 如果直接打包的apk包里面, 整个应用程序会大很多.经过查阅资料和实验,发现通过远程下载so文件,然后再动态注册so文件时可行的。主要需要解决下载so文件存放位置以及文件读写权限问题。
二、主要
linux中svn配置出错 conf/svnserve.conf:12: Option expected 解决方法
baalwolf
option
在客户端访问subversion版本库时出现这个错误:
svnserve.conf:12: Option expected
为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,如### This file controls the configuration of the svnserve daemon, if you##
MongoDB的连接池和连接管理
BigCat2013
mongodb
在关系型数据库中,我们总是需要关闭使用的数据库连接,不然大量的创建连接会导致资源的浪费甚至于数据库宕机。这篇文章主要想解释一下mongoDB的连接池以及连接管理机制,如果正对此有疑惑的朋友可以看一下。
通常我们习惯于new 一个connection并且通常在finally语句中调用connection的close()方法将其关闭。正巧,mongoDB中当我们new一个Mongo的时候,会发现它也
AngularJS使用Socket.IO
bijian1013
JavaScript AngularJS Socket.IO
目前,web应用普遍被要求是实时web应用,即服务端的数据更新之后,应用能立即更新。以前使用的技术(例如polling)存在一些局限性,而且有时我们需要在客户端打开一个socket,然后进行通信。
Socket.IO(http://socket.io/)是一个非常优秀的库,它可以帮你实
[Maven学习笔记四]Maven依赖特性
bit1129
maven
三个模块
为了说明问题,以用户登陆小web应用为例。通常一个web应用分为三个模块,模型和数据持久化层user-core, 业务逻辑层user-service以及web展现层user-web,
user-service依赖于user-core
user-web依赖于user-core和user-service
依赖作用范围
Maven的dependency定义
【Akka一】Akka入门
bit1129
akka
什么是Akka
Message-Driven Runtime is the Foundation to Reactive Applications
In Akka, your business logic is driven through message-based communication patterns that are independent of physical locatio
zabbix_api之perl语言写法
ronin47
zabbix_api之perl
zabbix_api网上比较多的写法是python或curl。上次我用java--http://bossr.iteye.com/blog/2195679,这次用perl。for example: #!/usr/bin/perl
use 5.010 ;
use strict ;
use warnings ;
use JSON :: RPC :: Client ;
use
比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!
brotherlamp
linux运维工程师 linux运维工程师教程 linux运维工程师视频 linux运维工程师资料 linux运维工程师自学
比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!
-----------------------------------------------------
兄弟连Linux运维工程师课堂实录-计算机基础-1-课程体系介绍1
链接:http://pan.baidu.com/s/1i3GQtGL 密码:bl65
兄弟连Lin
bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(
bylijinnan
java
import java.util.Random;
/**
* 题目:
* 给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(y1,y2,y3,y4,y5),
* 使得他们的哈密顿距离(d=|x1-y1| + |x2-y2| + |x3-y3| + |x4-y4| + |x5-y5|)最大
map的三种遍历方法
chicony
map
package com.test;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class TestMap {
public static v
Linux安装mysql的一些坑
chenchao051
linux
1、mysql不建议在root用户下运行
2、出现服务启动不了,111错误,注意要用chown来赋予权限, 我在root用户下装的mysql,我就把usr/share/mysql/mysql.server复制到/etc/init.d/mysqld, (同时把my-huge.cnf复制/etc/my.cnf)
chown -R cc /etc/init.d/mysql
Sublime Text 3 配置
daizj
配置 Sublime Text
Sublime Text 3 配置解释(默认){// 设置主题文件“color_scheme”: “Packages/Color Scheme – Default/Monokai.tmTheme”,// 设置字体和大小“font_face”: “Consolas”,“font_size”: 12,// 字体选项:no_bold不显示粗体字,no_italic不显示斜体字,no_antialias和
MySQL server has gone away 问题的解决方法
dcj3sjt126com
SQL Server
MySQL server has gone away 问题解决方法,需要的朋友可以参考下。
应用程序(比如PHP)长时间的执行批量的MYSQL语句。执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。都容易引起MySQL server has gone away。 今天遇到类似的情景,MySQL只是冷冷的说:MySQL server h
javascript/dom:固定居中效果
dcj3sjt126com
JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml&
使用 Spring 2.5 注释驱动的 IoC 功能
e200702084
spring bean 配置管理 IOC Office
使用 Spring 2.5 注释驱动的 IoC 功能
developerWorks
文档选项
将打印机的版面设置成横向打印模式
打印本页
将此页作为电子邮件发送
将此页作为电子邮件发送
级别: 初级
陈 雄华 (
[email protected] ), 技术总监, 宝宝淘网络科技有限公司
2008 年 2 月 28 日
&nb
MongoDB常用操作命令
geeksun
mongodb
1. 基本操作
db.AddUser(username,password) 添加用户
db.auth(usrename,password) 设置数据库连接验证
db.cloneDataBase(fromhost)
php写守护进程(Daemon)
hongtoushizi
PHP
转载自: http://blog.csdn.net/tengzhaorong/article/details/9764655
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。php也可以实现守护进程的功能。
1、基本概念
&nbs
spring整合mybatis,关于注入Dao对象出错问题
jonsvien
DAO spring bean mybatis prototype
今天在公司测试功能时发现一问题:
先进行代码说明:
1,controller配置了Scope="prototype"(表明每一次请求都是原子型)
@resource/@autowired service对象都可以(两种注解都可以)。
2,service 配置了Scope="prototype"(表明每一次请求都是原子型)
对象关系行为模式之标识映射
home198979
PHP 架构 企业应用 对象关系 标识映射
HELLO!架构
一、概念
identity Map:通过在映射中保存每个已经加载的对象,确保每个对象只加载一次,当要访问对象的时候,通过映射来查找它们。其实在数据源架构模式之数据映射器代码中有提及到标识映射,Mapper类的getFromMap方法就是实现标识映射的实现。
二、为什么要使用标识映射?
在数据源架构模式之数据映射器中
//c
Linux下hosts文件详解
pda158
linux
1、主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。 公网:IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。 局域网:每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机
nginx配置文件粗解
spjich
java nginx
#运行用户#user nobody;#启动进程,通常设置成和cpu的数量相等worker_processes 2;#全局错误日志及PID文件#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log inf
数学函数
w54653520
java
public
class
S {
// 传入两个整数,进行比较,返回两个数中的最大值的方法。
public
int
get(
int
num1,
int
nu