UUID 通用唯一识别码(Universally Unique Identifier)是一种软件建构的标准; UUID的目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不是需要通过中央控制端来做辨识信息的指定...如此以阿里,每个人都可以创建与其他人不冲突的UUID。...在这种情况下,就不需要考虑数据库创建时的重复问题; UUID是由一组32位数的16进制数字构成,UUID的标准形式包含32个16进制数字,以连字号分为五段。形式为 8-4-4-12的32个字符。...convert-uuid-to-byte-that-works-when-using-uuid-nameuuidfrombytesb https://my.oschina.net/u/347386/blog/182717 sqlite中...guid类型数据的操作 表结构 ?
从Android 3.1(HoneyComb) 也就是API 12开始,Android引入了一套新的启动控制,这就是程序的停止状态.那让我们看一下Google对于程序的停止状态的描述....从Android 3.1开始,系统的包管理器开始跟踪处理停止状态的程序.并且提供了方法来控制从后台进程或者其他程序对它们的启动....在能处理intent的目标处理者中不包含已经停止的程序....当如果intnet中没有或者设置了上面两个flag,在目标处理者中是包含已经处于停止的程序.但是注意,系统会为所有的广播intent增加FLAG_EXCLUDE_STOPPED_PACKAGES这个flag...如何变为停止状态 在设置应用管理中的应用详情页点击强制停止 使用adb shell adb shell am force-stop package-name 使用ActivityManager的隐藏方法
前言 做Android开发其实经常会遇到OOM然后程序崩溃的情况,导致这种情况一般来说是内存泄露造成的,捕获内存泄露的工具是leakCanary2还是推荐一下,当然本章并不是说这个的使用方法,程序OOM...2.将刚才创建的Test.kt的文件中VM options项里填上-Xms20m -Xmx20m 参数项的说明: -Xms20m (JVM初始分配的堆内存) -Xmx20m(最大可使用内存) -XX...,有个oomobj的类,然后通过while的死循环不停的在集合中插入新的oomobj这个类,用try catch(e:Exception)进行捕获,得到下图: 可以看到,提了OutOfMemoryError...接下来再看一个图: 从上图中可以看出来,OutOfMemory继承的VirtualMachineError是Error的分支里,而我们用Exception中是无法捕获的,想到获取到Error的信息,可以从它们的父类...JDK中Error类的的注释(如下)里提到过,Error是一种严重的问题,应用程序不应该捕捉它。所以说捕获OOM只是一个治标的办法,其实最核心的还是要解决内存泄露的问题。 完
在codeReview的时候被同事指出 其中object.getCode()的值时哦那个数据库查出来的一个deci类型的并且声明为not null。 类似图下声明的字段: ?...首先,我们要搞清楚“空值” 和 “NULL” 的概念: 1、空值是不占用空间的 2、mysql中的NULL其实是占用空间的,下面是来自于MYSQL官方的解释 “NULL columns require...打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。...可见,NOT NULL 的字段是不能插入“NULL”的,只能插入“空值”,上面的问题1也就有答案了。...而且对表索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。 (以上为查的资料) 所以我觉得我是对的,等明天去了去在讨论讨论。
https://blog.csdn.net/sinat_35512245/article/details/52923516 范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗...)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。...考虑这样一个表:【联系人】(姓名,性别,电话) 如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。...◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。...因为我们知道在一个订单中可以订购多种产品,所以单单一个 OrderID 是不足以成为主键的,主键应该是(OrderID,ProductID)。
controller为控制层,用于接收请求并分发至serivce,这一层不会写复杂的逻辑service为服务层,主要逻辑在这一层实现dao为数据访问层,用于接入数据库数据层:为数据库存储,通常会使用关系型数据库在这种架构结构中...,业务的模型体现在数据库表的设计中,应用层的本质是数据库的一层外皮,在这层外皮中,用java实现了业务行为逻辑,在应用层中也存在Entity的概念,是指数据库表的映射(与DDD的Entity是不同的概念...运用领域模型领域模型的含义在DDD中,更加强调业务抽象和面向对象编程,而不是过程式业务逻辑实现,领域模型是DDD的关键核心。...模型驱动设计构造块分离领域DDD中领域是重点关注的点,要想处理复杂的任务程序,需要做到关注点的分离,在设计中能够分别处理。...这里应注意DDD中的ENTITY与现在主流的ENTITY不是同一个概念,主流的ENTITY更像EJB中的实体bean,是数据库表的在应用中的映射,用来进行数据库操作。
这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题。 大家都知道,聚合根、实体和值对象这些领域对象都自身处理自己的业务逻辑。...在传统的实现中,可以通过If Else条件语句进行判断,但If Else语句在复杂领域中来检查是否满足一些业务条件存在以下的问题: 1. 无法很好的显示表达业务条件本身。 2. ...无法对多个条件在不同需要的地方进行灵活的组合。 为了更好的组织业务逻辑中关于业务条件的判断,最佳实践方式是将业务条件拆分得足够细,并用语义化的方式表示。...举个例子:酒店业务中,房间领域对象会处理预定房间的领域逻辑和退房的领域逻辑,在预定房间时,我们需要保证房间没有被其他人预定并且房间没有正在维护这两个业务条件同时满足;在退房时,我们需要保证房间里没有物品损坏或已经进行了损坏赔偿这两个业务条件中的任意一个...在房间领域对象的预定房间与退房的领域逻辑中,组合使用上述4个条件规则 //预定房间 public Room Reservation() { var roomisnotconfirmedspec
然而在Android系统中为什么存在工作者线程呢,常用的工作者线程有哪些不易察觉的问题呢,关于工作者线程有哪些优化的方面呢,本文将一一解答这些问题。...工作者线程的存在原因 因为Android的UI单线程模型,所有的UI相关的操作都需要在主线程(UI线程)执行 Android中各大组件的生命周期回调都是位于主线程中,使得主线程的职责更重 如果不使用工作者线程为主线程分担耗时的任务...关于如何避免内存泄露,我们可以使用静态内部类 + 弱引用的形式解决。...串行带来的问题 Android团队关于AsyncTask执行策略进行了多次修改,修改大致如下: 自最初引入到Donut(1.6)之前,任务串行执行 从Donut到GINGERBREAD_MR1(2.3.4...上面的轻量级任务处理器利用HandlerThread的单一线程 + 任务队列的形式,可以处理类似本地IO(文件或数据库读取)的轻量级任务。
页面一布局如下: 实现效果:在页面一的输入文本框内输入文本,点击跳转按钮可以调到页面二,并且将输入的文本传到页面二实现传值 页面一逻辑代码如下: et_text = (EditText) findViewById...(R.id.et_text); //获取EditText 的id btn = (Button) findViewById(R.id.btn); // 获取点击按钮id...putExtra中 startActivity(intent); //开启新页面 } }); 页面二逻辑代码如下: tv_text...= (TextView) findViewById(R.id.tv_text); //获取TextView的id /** * 1....tv_text.setText(text); //给TextView 赋值 ok 这就是简单的传值怎么样简单吧
最近在做公司项目的时候,老是遇到内存不够导致APP资源被系统回收的情况,但是回到之前的界面,调用android.os.Process.killProcess(android.os.Process.myPid...当Android系统的内存不足时,会根据以下的内存回收规则来回收内存: 1.先回收与其他Activity或Service/Intent Receiver无关的进程(即优先回收独立的Activity)...: 1, 系统会重新加载c,而且是在新线程中 2, 现在点返回关闭c,系统就会重新加载b,而且是在新的进程中(跟c不是一个进程) 3, 现在点返回关闭b,系统就会重新加载a,而且是在新的进程中(跟c,b...在a中重新初始化数据 (a往往是登录界面) 现在讲办法2的实现: 在b,c等所有非a的activity中的onCreate里面加上下面的代码 @Override protected void onCreate...// 因为系统加载的所有的Activity不在同一个线程,所以要结束除了loginActivity之外的其他进程 android.os.Process.killProcess(android.os.Process.myPid
[TOC] ---- 应用分层&分层领域模型为什么重要? 我们在软件开发设计及开发过程中,习惯将软件横向拆分为几个层。...第四是逻辑复用/代码复用: 通过分层,明确定义各层职责,再也不会出现系统中多个地方查询同一个数据库表的代码。因为查询某个数据库表的工作只会由一个数据访问层类来统一提供。...---- 典型的领域模型都有哪些? 以上我们简单了解了分层的重要性,那么随着分层引入的典型领域模型都有哪些?...我们还是来看看《阿里开发手册》提供的分层领域模型规约参考: DO(Data Object):此对象与数据库表结构一一对应,通过DAO层想上传输数据源对象。...在进行不同领域对象转换时,有些问题是需要我们考虑的。 ?
当我们使用一个较高版本才有的api时,编译器会报错,这个注解的作用仅仅是让编译通过,而并没有避免低版本的系统运行高版本的api的问题,在使用时我们需要自己判断版本号来使用不同的api。...@RequiresApi:当我们对某个类或者方法使用这个注解时,如果我们需要在其他类中调用该类或者类中方法时,编译器会提示我们需要处理版本差异的判断。...当我们查看该注解类的源码时,发现其注释有这么一段话: This is similar in purpose to the older {@code @TargetApi} annotation, but...其大概意思为: 这在目的上与较旧的{@code @TargetApi}注释相似,但更清楚地表示这是调用方的要求,而不是用于在超出{ minSdkVersion的方法中“抑制”警告* }。...该翻译结合我们的实践,则表示如果使用了@RequiresApi注解,那么在调用被修饰的类或者方法时,同样会警告调用者,需要处理不同版本之间的差异化,而@TargetApi、@SuppressLint("
大家好,又见面了,我是你们的朋友全栈君。...关于android studio 安装intel haxm问题的解决 遇到的问题 解决问题 总结 遇到的问题 安装android studio 过程中intel haxm失败,导致后续笔记本运行模拟器过程中漫长等待让我痛不欲生...我的笔记本型号是thinkpad w510,处理器i7 Q720,操作系统windows 7 sp1。...解决问题 1、进入android sdk安装目录Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager,执行intelhaxm-android.exe...,希望对小伙伴们有帮助: 1、查cpu硬件是否支持,不支持就不要挣扎了:https://ark.intel.com/content/www/us/en/ark.html#@Processors,较老的cpu
1.MVP的工作原理? ? image 1. View接受用户的交互请求 2. View将请求转交给Presenter 3. Presenter操作Model进行数据库更新 4....MVVM是在原有领域Model的基础上添加一个ViewModel,这个ViewModel除了正常的属性意外,还包括一些供View显示用的属性。...例如在经典的MVP中,view有一个属性ischeck,需要在presenter中设置view的ischeck值。...ViewModel 注意这里的“Model”指的是View的Model,跟MVVM中的一个Model不是一回事。...网上有一个故事讲,一个人在一家公司做一个新产品时,一名外包公司的新员工直接在View中做了数据库持久化操作,而且一个hibernate代码展开后发现竟然有几百行的SQL语句,搞得他们惊讶不已,一时成为笑谈
我们都知道Android是单线程模型,这意味着Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行,所以你单纯的new一个Thrad并且start()不行的,因为这违背了Android...很幸运的是Android为我们提供了在其他线程中访问UI线程的方法,相信大家都见过,这几个就是Activity的runOnUiThread方法,View的post和postDelayed方法,以及最常用的...有了Android为我们提供了这些方法我们就可以很好的解决一些长时间处理的任务了,但是在使用的时候我们还必须注意以下几点: 这些方法或者类必须在在UI线程中创建和调用 其实这些方法和类最终的实现都是Android...的Message、MessageQueue和Looper的机制,所以不要期待你会马上看到结果(效果),因为这是一个Loop一直循环出MessageQueue中的Message执行的过程,如果你没有看到效果...后语:忙的很久没有写博客了,搭黑写了平时总结的线程的注意事项,demo就不写了,相信大家都会,此外多了解点Android的消息机制对于这个理解比较好的多。。
} 方式二: { java.text.DecimalFormat df = new java.text.DecimalFormat("#.00"); df.format(你要格式化的数字...表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型 方法四(四舍五入): { double f = 111231.5585; BigDecimal b = new...这里要知道一点,不管是Float类型还是Double类型,他们都是不会记住小数位数的,而BigDecimal就可以记住。...而且这种需求我们肯定是用String来记录,因为在UI显示肯定是要转换为String类型的。...{ float num = 3.140f; BigDecimal b = new BigDecimal(num); //保留5位并且属于四舍五入类型,当然这里的四舍五入没有任何意义
我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼。...在Android中支持的描述大小区域的类型有以下几种: px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。...由此,根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知 Android 默认使用 sp 作为字号单位。...pt(points)——磅:是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用; 在 Android 中,1pt 大概等于2.22sp以上供参考,如果 UI 能够以sp为单位提供设计是最好的...,如果设计中没有sp的概念,则开发人员也可以通过适当的换算取近似值。
Android 中的 虚拟器和标准的 JVM 有所不同,因为它们需要运行在 Android 设备上,因此他们具有不同的优化和限制。...Java 栈划分为操作数栈,栈帧数据和局部变量数据,方法中分配的局部变量在栈中,同时每一次方法的调用都会在栈中奉陪栈帧,栈的大小是把双刃剑,分配太小可能导致栈溢出,特别是在有递归,大量的循环操作的时候。...#### DVM 原名 Dalvik 是 Google 公司自己设计用于 Android 平台的虚拟机,**本质上也是一个 JAVA 虚拟机,是 Android 中 Java 程序运行的基础**,其指令基于寄存器架构...是在 Android 5.0 中引入的虚拟机,与 DVM 相比,**ART 使用的是 AOT(Ahead of Time) 编译技术**,这意味着他将应用程序的字节码转换为本机机器码,而不是在运行时逐条解释字节码...``` 可分配的最大对内存上限,**需要在 manifest 文件中设置 android:largeHeap="true" 方可启用** > manager.largeMemoryClass 对应
---- 以下文章转载自:关于Android Studio中Run按钮是灰色的解决 2016年07月21日 14:54:40 拿来人家的工程用,就是有各种版本啊设置啊的问题,要晕了。。。...首先是,在不同的AS中,gradle版本不同,下载的sdk版本不同,这些,都在gradle(Project、Models)相关代码里调过来就好。之前的文章里有说过。...在model下拉框中选择app.如果下拉框中没有app,(可能有工程名),那么请先去设置: tools ->Android->sync project with gradles files; 更新好后...有时,运行还可能出现报错—— Could not identify launch activity: Default Activity not found 这时,在上个页面中 ?...launch option 中设置好指定的activity就好。 暂时,出现的问题就是这些。解决了。
领取专属 10元无门槛券
手把手带您无忧上云