Mark

iOS开发之多线程技术—GCD篇

邮差的信 提交于 2020-05-08 05:54:34
本篇将从四个方面对iOS开发中GCD的使用进行详尽的讲解: 一、什么是GCD 二、我们为什么要用GCD技术 三、在实际开发中如何使用GCD更好的实现我们的需求   一、Synchronous & Asynchronous 同步 & 异步   二、Serial Queues & Concurrent Queues 串行 & 并发    三、Global Queues全局队列   四、Main Queue主队列   五、同步的作用   六、dispatch_time延迟操作   七、线程安全(单例dispatch_once、读写dispatch_barrier_async)   八、调度组(dispatch_group) 四、定时源事件和子线程的运行循环 一、什么是GCD   GCD 是基于 C 的 API,它是 libdispatch 的市场名称,而 libdispatch 作为 Apple 的一个库,为并发代码在多核硬件(跑 iOS 或 OS X )上执行提供有力支持。 二、我们为什么要用GCD技术 GCD 能通过推迟昂贵计算任务并在后台运行它们来改善你的应用的响应性能。 GCD 提供一个易于使用的并发模型而不仅仅只是锁和线程,以帮助我们避开并发陷阱。 GCD 具有在常见模式(例如单例)上用更高性能的原语优化你的代码的潜在能力。 GCD旨在替换NSThread等线程技术

web前端(10)—— 浮动,清除默认样式

有些话、适合烂在心里 提交于 2020-05-08 05:48:54
文档流 web页面和ps等设计软件有本质的区别,web 网页的制作,是个“流”,从上而下 ,像 “织毛衣”,就跟编程语言一样,都是由上而下 而设计软件 ,想往哪里画东西,就去哪里画 文档流带来的最明显的现象就是一行写不完换行写 自动换行,一行写不满,换行写 如果在一行内写文字,文字过多,那么浏览器会自动换行去显示我们的文字 文档流还有其他现象 底部对齐,高矮不管 文字还有图片大小不一,都会让我们页面的元素出现高矮不齐的现象,但是在浏览器查看我们的页面总会发现底边对齐 例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> p:first-letter{font-size:50px} </style> </head> <body> <p>test123</p> </body> </html> 效果测试: 空白折叠现象 多个空格会被合并成一个空格显示到浏览器页面中。img标签换行写。会发现每张图片之间有间隙,如果在一行内写img标签,就解决了这个问题,但是我们不会这样去写我们的html结构。这种现象称为空白折叠现象 浮动与清除浮动 浮动是css里面布局最多的一个属性,也是很重要的一个属性 float 表示浮动的意思,它有三个值: none: 表示不浮动

Java运行时环境---内存划分

若如初见. 提交于 2020-05-08 04:09:27
背景 :听说Java运行时环境的内存划分是挺进BAT的必经之路。 内存划分 : Java程序内存的划分是交由JVM执行的,而不像C语言那样需要程序员自己买单(C语言需要程序员为每一个new操作去配对delete/free代码),放权给JVM虚拟机处理有利也有弊,好处是不容易出现内存泄漏和内存溢出问题,坏处就是自己的屁股不能自己擦,万一有一天JVM罢工不释放了,还是自个忘了释放,So了解虚拟机容易引起内存泄漏和溢出的场景对Java程序员来说还是必不可少的。【内存溢出:Out Of Memmory,系统已经不能再分配空间了,好比你需要50M的空间,系统就只剩下40M;内存泄露:Memmory Leak,开辟了资源空间但用完后忘记释放,内存还在被占用,多次内存泄漏就会导致内存溢出;】了解JVM内存划分要端到端,先从Java程序执行的具体过程来看: 从图1中可以清楚看到Java程序的执行过程,大致就是Java源代码(后缀为.java)首先被Java编译器编译成字节码文件(后缀为.class),然后交由JVM中的类加载器加载各个类的字节码文件,加载好字节码文件后再交由JVM引擎执行。在整个程序执行过程中,上图中运行时区域会用一段空间来存储程序执行期间需要用到的数据和相关信息,也就是我们弄懂内存划分要深度研究的区域,即JVM。 运行时数据(内存)区: 图2中

jvm内存区域

笑着哭i 提交于 2020-05-08 02:37:10
前言:jvm是java的底层,是所有java框架的底层,凡事需深入现象看本质,知晓其原理才能更好的做上层开发。 一、jvm的体系结构 类装载器classloader:用来装载.class文件 执行引擎:执行字节码,或者执行本地方法 运行时数据区(这个就是本章讨论的重点):方法区、虚拟机栈、本地方法栈、堆、程序计数器 二、运行时数据区 1、程序计数器:可以看成当前线程所执行的字节码的行号指示器( 线程私有) 2、 java虚拟机栈:存放基本数据类型、对象引用类型(线程私有) 3、本地方法栈:存放本地(native)方法相关信息 4、方法区:存放已被虚拟机加载的类型信息、常量、静态变量、及时编译器编译后额代码缓存等数据 5、堆:对象实例及数组 三、对象的内存布局 对象在堆内存的存储布局可以分为三个部分:对象头、实例数据、填充数据(保证对象大小都是8字节的整数倍) Hotspot虚拟机对象的对象头中包括两类信息:第一类是用于存储对象自身的运行时的数据,如hashcode、gc分代年龄、锁状态标志、线程持有的锁、偏向线程id、偏向时间戳,这些被称为Mark Word,另一类是类型指针(通过其判断是哪个类的实例) 四、垃圾收集(GC) 显然,不能所有对象一直在内存中存在,这样不停有新对象,内存就会爆掉,所有需要进行GC,而在进行GC的时候,我们首先就需要判断哪些对象存活,哪些对象已死

攻防世界 reverse parallel-comparator-200

送分小仙女□ 提交于 2020-05-07 21:26:19
parallel-comparator-200 school-ctf-winter-2015 https://github.com/ctfs/write-ups-2015/tree/master/school-ctf-winter-2015/reverse/parallel-comparator-200 linux平台,mark,以后解决。 给出了源代码,关键在于checking函数返回0 void * checking( void * arg) { char *result = malloc ( sizeof ( char )); char *argument = ( char * )arg; *result = (argument[ 0 ]+argument[ 1 ]) ^ argument[ 2 ]; return result; } 另一点是 while ((initialization_number = random()) >= 64 ); int first_letter; first_letter = (initialization_number % 26 ) + 97 ; initialization_number 其实是个固定值,调试时可得到 wp: differences = [0, 9, -9, -1, 13, -13, -4, -11, -9, -1, -7

一个超好用的论文图片编辑神器---Inkscape(Mark)

人盡茶涼 提交于 2020-05-07 20:03:27
好文配好图,结合我的科研实践和身边研究人员的使用频率,极力给小伙伴们推荐Inkscape用于矢量图编辑。让你得心应手画图,告别“科研能力强,配图能力弱”的窘境。 一、Inkscape 简介 Inkscape是一款专业的矢量图编辑工具,功能就像 CorelDRAW 或 Illustrator,可运行在 Windows、Mac OS X 以及 Linux 平台上,它是开源的自由软件。 二、Inkscape 特点 简单易用 鼠标箭头放在相应的图标上会提示如何使用,简单说你可以边学边作图,无师自通。 免费自由 Inkscape是免费软件,且无限制下载使用,甚至可以翻译修改它。 用途广泛 对于设计师等,Inkscape 可以帮助您将不成熟的素材(一张涂鸦、照片、素描等)转变成专业的设计,得到的图片可用于广告发布、模型制作、海报制作、名片制作等;对于学术研究,通常用于后期编辑高质量的论文图用于文章的发表。 支持多种格式 Inkscape支持的常用输入格式为SVG,但也可以输入AI(Adobe Illustrator)、PDF等等格式,Inkscape支持多种导出格式:SVG、PNG(用于获取高质量论文发表图)等格式。 支持不同系统 Inkscape除了支持Windows外,还有Linux与Mac版本,所以不管你用什么系统都可以使用。 支持多语言 目前支持多种语言版本:中文与英语等。 三

分布式存储Ceph之PG状态详解

可紊 提交于 2020-05-07 19:30:02
1. PG介绍 这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下: 在架构层次上,PG位于RADOS层的中间。 a. 往上负责接收和处理来自客户端的请求。 b. 往下负责将这些数据请求翻译为能够被本地对象存储所能理解的事务。 是组成存储池的基本单位,存储池中的很多特性,都是直接依托于PG实现的。 面向容灾域的备份策略使得一般而言的PG需要执行跨节点的分布式写,因此数据在不同节点之间的同步、恢复时的数据修复也都是依赖PG完成。 2. PG状态表 正常的PG状态是 100%的active + clean, 这表示所有的PG是可访问的,所有副本都对全部PG都可用。 如果Ceph也报告PG的其他的警告或者错误状态。PG状态表: 3.1 Degraded 3.1.1 说明 降级:由上文可以得知,每个PG有三个副本,分别保存在不同的OSD中,在非故障情况下,这个PG是active+clean 状态,那么,如果PG 的 副本osd.4 挂掉了,这个 PG 是降级状态。 3.1.2 故障模拟 a. 停止osd.1 $ systemctl stop ceph-osd@1 b. 查看PG状态 $ bin/ceph pg stat 20 pgs: 20 active+undersized+degraded; 14512 kB data, 302 GB used

java堆内存又溢出了,教你一招必杀技

妖精的绣舞 提交于 2020-05-07 18:41:09
JAVA堆内存管理是影响性能主要因素之一。 堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。 先看下JAVA堆内存是如何划分的,如图: JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)。 年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组成。Eden区占大容量,Survivor两个区占小容量,默认比例是8:1:1。 堆内存用途:存放的是对象,垃圾收集器就是收集这些对象,然后根据GC算法回收。 非堆内存用途:永久代,也称为方法区,存储程序运行时长期存活的对象,比如类的元数据、方法、常量、属性等。 在JDK1.8版本废弃了永久代,替代的是元空间(MetaSpace),元空间与永久代上类似,都是方法区的实现,他们最大区别是:元空间并不在JVM中,而是使用本地内存。 元空间有注意有两个参数: MetaspaceSize :初始化元空间大小,控制发生GC阈值 MaxMetaspaceSize : 限制元空间大小上限,防止异常占用过多物理内存 为什么移除永久代? 移除永久代原因:为融合HotSpot JVM与JRockit VM(新JVM技术)而做出的改变

JVM GC VS .Net GC

ぐ巨炮叔叔 提交于 2020-05-07 12:57:15
Net平台GC VS JVM垃圾回收 前言 不知道你平时是否关注程序内存使用情况,我是关注的比较少,正好借着优化本地一个程序的空对比了一下.Net平台垃圾回收和jvm垃圾回收,顺便用dotMemory看了程序运行后的内存快照,生成内存快照后,妈妈再也不担心我优化程序找不到方向了。 .Net平台垃圾回收 内存优化 凭空想象这些概念多少会索然无味,下图是我我基于本地的一个程序生成的内存快照,使用jetbrains推出的 dotMemory 工具生成。 生成内存快照 程序运行时可以通过右上角的Get SnapShot按钮生成内存快照,内存快照里可以看到具体的对象、消耗内存的情况,比如说一些大的字符串对象,重复的大量的字符串对象, 那么从上面这张图上都能看到哪些关键字呢? 什么是Heap generation1和Heap greneration2呢? 什么是Allocated呢? 什么是GC GC (Garbage Collection)如其名,就是垃圾收集,当然这里仅就内存而言。Garbage Collector(垃圾收集器,在不至于混淆的情况下也成为GC)以应用程序的root为基础,遍历应用程序在 托管堆(Managed Heap) 上动态分配的所有对象,通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用

OSChina 周三乱弹 —— 露出来的不是性感

我与影子孤独终老i 提交于 2020-05-06 02:04:21
Osc乱弹歌单(2020)请戳( 这里 ) 【今日歌曲】 @ 薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Butter-Fly》- 和田光司 手机党少年们想听歌,请使劲儿戳( 这里 ) @ 宇辰OSC : #立夏# 确实到夏天了, 上街就能看出来, “请你们喝宝宝奶昔。” 夏天到没到就是姑娘们先知道的呗, @ 仓颉大哥 :不知不觉,明天就 #立夏# 了 哎哟,好快,怪不得,大街上一大片穿裙子、露大腿的姑娘 不然太热了, 街上的风景处处, “只有一个是正常男人么?” 身材不好就不行了, 不然露出来的不是性感, 是肉了, @ IT战略布局专家 :今天地铁上好多小姐姐 穿短袖喜欢把肚子露出来,这是为啥呀? 老早就催你减肥吧! “快去减肥!” “快去!减肥!” “块!去!减!肥!” 减肥可以, 但是我戒不掉奶茶。 @ ArcticF0X :周杰伦四岁学琴,中学就尝试写歌 一边打工,一边参加选秀 出道至今一直坚持自己的风格 和高质量的创作 他能成功和自律脱不了关系 所以, 连他这么自律的人都戒不了奶茶 我凭啥能戒? 有没有特别快的减肥方式啊? 我问了问我的健身教练, “骗人!抽脂不是最快的,火化最快了!” 看来想瘦下来, 只有看看ps过后的照片了。 当然不是男友拍摄的 @ 開源中國張學友 :没有一个女生能笑着从男朋友的手机走出来,这句话说的还是有道理的