- iOS - TLS(线程本地存储)
Batac_蝠猫
iOS底层原理iosobjective-c开发语言
从源码中,详细总结TLS(ThreadLocalStorage)的实现:1.TLS基本结构//TLS的基本结构structtls_data{pthread_key_tkey;//线程本地存储的键void(*destructor)(void*);//清理函数};//自动释放池的TLSclassAutoreleasePoolPage{staticpthread_key_tconstkey=AUTORE
- Objective-C高级特性浅析与实践指南
小鹿撞出了脑震荡
objective-c学习
OC的学习笔记(二)文章目录OC的学习笔记(二)@property访问控制符点语法自定义`init`方法内存管理retain和release@class处理发生异常的方法NSSrting的常用方法类方法对象方法lengthcharacterAtIndexisEuqalStringcompare@autorelease和自动释放池自动释放池Category类别与扩展category的运用NSNumb
- __weak如何实现对象值自动设置为nil的
Sweet丶
详情请查看:http://blog.csdn.net/hherima/article/details/38661803总结如下:weak的功能:*若使用__weak修饰符的变量引用对象被废弃时,则将nil赋值给该变量*使用附有__weak修饰符的变量,就是使用注册到autoreleasepool的对象ARC对象释放的过程:1.objc_release2.因为引用计数为0所以执行dealloc3._
- 509,关于@autoreleasepool(面试点:1,如果你正在编写不基于UI 框架的程序,比如命令行工具。2, 如果你编写的循环创建了很多临时对象。 你可以在循环中使用自动释放池bloc...
枫叶1234
面试经常会有这样的问题:1.什么是@autoreleasepool?2.里面对象的内存什么时候释放?3.什么时候要用@autoreleasepool?回答:1.@autoreleasepool是自动释放池,让我们更自由的管理内存2.当我们手动创建了一个@autoreleasepool,里面创建了很多临时变量,当@autoreleasepool结束时,里面的内存就会回收3.ARC时代,系统自动管理自
- autoreleasepool自动释放池(就问你点不点心了...)
best_su
送一波干货:所谓自动释放池:自动释放池是用来存放对象的,存储在自动释放池中的对象,在自动释放次销毁的时候会给池子中的每一个对象发送一个release消息,即调用对象的relesae方法可以解决的问题:将创建的对象存入到自动释放池中,就不需要在手动的relese这个对象了。因为池子销毁的时候就会自动的调用对象的release方法好处:将创建的对象存储到自动的释放池中,不需要在写release如何创建
- IOS-OC-json解析和XML解析代码案列
草根小强
json解析#import#import"Model.h"#import"JSON.h"intmain(intargc,constchar*argv[]){@autoreleasepool{NSString*path=@"/Users/qianfeng/Desktop/OC课堂老师代码/oc上课代码/1231/easy.json";//系统自带方法的解析NSData*data=[NSDatadat
- OC 对象本质
曼谷第一开膛手
一个NSObject对象占用多少内存?对象的isa指针指向哪里?OC的类信息存放在哪里?intmain(intargc,char*argv[]){@autoreleasepool{NSObject*objc=[[NSObjectalloc]init];return0;}}第一个问题就是转化为objc这个指针指向的内存区域有多大。为了搞清这个问题,我们要搞清楚NSObject在内存是怎么布局的,他的
- main.m主函数介绍
frank_pang1995
整个App程序的主函数,入口函数intmain(intargc,char*argv[]){//自动内存释放池@autoreleasepool{//UIKit框架结构启动函数//参数一:argc,启动时带有参数的个数//参数二:argv,参数列表//参数三:要求传入一个主框架类对象,如果参数为nil,系统会自动用默认的框架类作为主框架类名//参数四:主框架的代理类对象returnUIApplicat
- 019-C++跨平台开发内存检测
一亩三分甜
《C++文章汇总》上一篇介绍了《018-智能指针》,本文介绍实际开发中利用Xcode工具对内存进行检测。在音视频开发中,不可避免要使用C++,需要我们自己管理内存,不像OC可通过自动释放池autoreleasepool管理内存,如何知道我们写的C++代码是否有内存忘记释放,内存泄露,内存破坏呢?可充分利用Xcode检测调试工具进行检测调试1.开发中遇到的问题需求图片.png图片.png现实开发中图
- Objective - C block(二)block的类型及捕获变量
爱玩游戏的iOS菜鸟
(一)block捕获变量类型为了保证block内部能够正确访问外部的变量,block有一个变量捕获机制不同的变量类型捕获(1)变量捕获为autointmain(intargc,constchar*argv[]){@autoreleasepool{intage=10;//auto变量void(^block2)(int,int)=^(inta,intb){NSLog(@"thisisablock==%
- iOS底层 -- 内存管理之autorelase、autoreleasepool原理
happy神悦
自动释放池自动释放池的主要底层数据结构是:__AtAutoreleasePool、AutoreleasePoolPage调用了autorelease的对象最终都是通过AutoreleasePoolPage对象来管理的__AtAutoreleasePool结构体struct__AtAutoreleasePool{__AtAutoreleasePool(){//构造函数,在创建结构体的时候调用atau
- AutoreleasePool探究
飞奔的小鲨鱼
虽然现在已经是arc的时代了,不用我们自己管理对象的释放问题,但在面试的过程中难免会被问到这方面的问题,另一方了解AutoreleasePool的实现原理也会使我们对内存管理这方面有更加清晰的认识。再看这篇文章之前,先回到我们的题目中来,假如你现在正在面试,面试官问你,说说你对AutoreleasePool的了解。。。AutoreleasePool就是我们常说的自动释放池,在mrc的时候采用引用计
- iOS开发之break/continue/return
魔力双鱼
关于break/continue/return,都有结束或者跳出循环的意思,具体如何?1.关于break运行下边的程序,将看到i循环到2时候就结束,当i等于2时,循环体内遇到break语句,程序跳出循环intmain(intargc,constchar*argv[]){@autoreleasepool{//break用于完全结束一个循环,跳出循环体,不管是那种循环,//一旦在循环体中遇到break
- Objective-C编译成C++代码报错
堕落白天使
由于想要了解oc语言中的@autorelease自动释放池的源码,所以转成的C++代码是什么样子的,在进入项目目录中,执行clang-rewrite-objcViewController.m时如下错:简单的解释就是,当我们在语言转换的时候,无法识别库此时我们需要在编译的时候让系统识别objective-c的系统库,所以要在编译的时候为期制定相应的sdk路径,那么可以进行一下操作clang-xobj
- iOS--经典问题:runtime三种调用方式
OXHO
创建一个OC项目,创建项目目录结构对象方法调用源码如下:main.m#import#import"Person.h"#includeintmain(intargc,constchar*argv[]){@autoreleasepool{//insertcodehere...Person*p=[[Personalloc]init];[prun];objc_msgSend(p,sel_registerN
- OC-字符串
SauronKing
程序设计-Object-Ciosobjective-c
前言本篇文章介绍OC的字符串字符串常量要使用Objective-C语言创建一个常量字符串对象,需要在字符串开头放置一个@字符,下面的语句创建了一个常量字符串@"Programoningisfun"NSLogNSLog函数可以打印格式化对象,类似于C语言的printf看下面的例子:intmain(intargc,constchar*argv[]){@autoreleasepool{NSString*
- 理解 ARC 实现原理 -- 详细总结
想名真难
ARC是iOS中管理引用计数的技术,帮助iOS实现垃圾自动回收,具体实现的原理是由编译器进行管理的,同时运行时库协助编译器辅助完成。主要涉及到Clang(LLVM编译器)和objc4运行时库。本文主要内容由修饰符__strong、__weak、__autorelease拓展开,分别延伸出引用计数、弱引用表、自动释放池等实现原理。在阅读本文之前,你可以看看下面几个问题:在ARC下如何存储引用计数?如
- 11-6 指针(Pointer)
草根小强
#importstructMyStruct{intid;char*name;}*pMyStruct;typedefint(*fun)(int,int);intadd(intm,intn){returnm+n;}intmul(intm,intn){returnm*n;}//指针intmain(intargc,constchar*argv[]){@autoreleasepool{intcount=10
- 2021-09-24
我是wLiang
RunLoop与线程的关系RunLoop对外的接口RunLoop的ModeRunLoop的内部逻辑RunLoop的底层实现苹果用RunLoop实现的功能6.1.AutoreleasePool6.2.事件响应6.3.手势识别6.4.界面更新6.5.定时器6.6.PerformSelecter6.7.关于GCD6.8.关于网络请求RunLoop的实际应用举例7.1.AFNetworking7.2.As
- iOS内存管理(三)AutoReleasePool & NSRunLoop 底层分析
辉辉岁月
本文主要分析AutoReleasePool以及NSRunLoop的底层实现AutoReleasePool自动释放池自动释放池是OC中的一种内存自动回收机制,它可以将加入AutoreleasePool中的变量release的时机延迟,简单来说,就是当创建一个对象,在正常情况下,变量会在超出其作用域的时立即release。如果将对象加入到了自动释放池中,这个对象并不会立即释放,会等到runloop休眠
- Runloop的认识
畵_460e
一:什么是Runloop(面试题:什么是RunLoop?项目中有用到吗?)顾名思义,运行循环,在程序运行过程中循环做一些事情,应用范畴:定时器timer、PerformSelector、GCD、事件响应、手势识别、界面刷新、网络请求、AutoreleasePool,runloop的基本作用就是保持程序的持续运行,处理APP中的各种事件,接受省CPU资源,提高程序性能,该做事的时候做事,该休息的时候
- iOS block以及变量捕获
学海无涯乐作舟
iOS学习笔记ios
不同类型变量的捕获方式1、局部变量和block使用局部变量的blockintmain(intargc,constchar*argv[]){@autoreleasepool{intage=10;block=^{//age的值捕获进来(capture)NSLog(@"ageis%d,",age);};age=20;block();}return0;}clang编译后的底层代码struct__test_
- iOS查看Runtime运行过程--Clang--轻量级编译器随笔
OXHO
首先创建一个C语言工程:选择注意项项目名随便写。目录结构如下:目录结构main文件里:#import#import"Person.h"intmain(intargc,constchar*argv[]){@autoreleasepool{//insertcodehere...NSLog(@"Hello,World!");Person*p=[[Personalloc]init];[prun];}ret
- Objective-C中使用STL标准库Queue队列
林鸿群
Objective-Cobjective-cc++算法
1.修改.m文件为mm2.导入queue头#include3.使用:#import#include#includeusingnamespacestd;intmain(intargc,constchar*argv[]){@autoreleasepool{NSLog(@"C++标准库queue队列使用");queueq;queueq2;for(inti=0;i0){NSLog(@"q使用标准库queu
- 011-Application,VIewController,View的总结
Yasic
应用程序=代码+系统框架iOS应用入口——Main函数main函数由Xcode在创建工程时提供,一般不改变其中内容,除非真的知道自己在做什么。#import#import"AppDelegate.h"intmain(intargc,char*argv[]){@autoreleasepool{returnUIApplicationMain(argc,argv,nil,NSStringFromClas
- 拾陆:AutoreleasePool实现原理
FY_Chao
前言通过前面runloop文章中,我们知道在mainRunloop存在两个关于autoreleasePool的RunLoopObserver,分别监听了runloop的①.进入(Entry)、②.BeforeWaiting(准备进入休眠)和Exit(即将退出Loop)进入(Entry):监听到进入后会调用_objc_autoreleasePoolPush()函数创建自动释放池。准备进入休眠(Bef
- iOS性能分析小计
呆木大人
1.启动时间1.1main启动前时间测量:通过环境变量,直接打印run>>arguments>>environment>>+号Name:DYLD_PRINT_STATISTICSValue:11.2main之后通过计时打印时间main.m:CFAbsoluteTimestartTime;intmain(intargc,char*argv[]){@autoreleasepool{startTime=
- iOS-内存管理分析(下)
似水流年_9ebe
前言iOS-内存管理分析(上)以及iOS-内存管理分析(中)分析了内存的分区,布局,散列表,弱引用计数表等相关知识,这篇文章继续分析内存管理。1自动释放池初探在我们的demo工程的main文件代码如下#importintmain(intargc,constchar*argv[]){@autoreleasepool{NSLog(@"Hello,World!");}return0;}我们通过clang
- 浅谈Block
畵_460e
block的本质先看下面代码再转成C++代码之后是怎样的,xcrun-sdkiphoneosclang-archarm64-rewrite-objc源文件-ocpp文件intmain(intargc,constchar*argv[]){@autoreleasepool{void(^block)(void)=^{NSLog(@"Hello,World!");};block();}转成的cpp文件代码
- ios开发 之 多线程
TO_ZRG
SDKiosobjective-c
目录第一节:多线程简介线程执行原理主线程多线程解决方案pthread__bridgeNSThread线程的状态第二节:多线程访问资源@Synchronizednonatomic、atomic自动释放池属性修饰符第三节:消息循环消息模式第四节:GCDBarrierdispatch_once、dispatch_after构建单例模式调度组第五节:NSOperationGCD与NSOperation的区
- Nginx负载均衡
510888780
nginx应用服务器
Nginx负载均衡一些基础知识:
nginx 的 upstream目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比
- RedHat 6.4 安装 rabbitmq
bylijinnan
erlangrabbitmqredhat
在 linux 下安装软件就是折腾,首先是测试机不能上外网要找运维开通,开通后发现测试机的 yum 不能使用于是又要配置 yum 源,最后安装 rabbitmq 时也尝试了两种方法最后才安装成功
机器版本:
[root@redhat1 rabbitmq]# lsb_release
LSB Version: :base-4.0-amd64:base-4.0-noarch:core
- FilenameUtils工具类
eksliang
FilenameUtilscommon-io
转载请出自出处:http://eksliang.iteye.com/blog/2217081 一、概述
这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作,几乎都可以在这个框架里面找到。 非常的好用。
- xml文件解析SAX
不懂事的小屁孩
xml
xml文件解析:xml文件解析有四种方式,
1.DOM生成和解析XML文档(SAX是基于事件流的解析)
2.SAX生成和解析XML文档(基于XML文档树结构的解析)
3.DOM4J生成和解析XML文档
4.JDOM生成和解析XML
本文章用第一种方法进行解析,使用android常用的DefaultHandler
import org.xml.sax.Attributes;
- 通过定时任务执行mysql的定期删除和新建分区,此处是按日分区
酷的飞上天空
mysql
使用python脚本作为命令脚本,linux的定时任务来每天定时执行
#!/usr/bin/python
# -*- coding: utf8 -*-
import pymysql
import datetime
import calendar
#要分区的表
table_name = 'my_table'
#连接数据库的信息
host,user,passwd,db =
- 如何搭建数据湖架构?听听专家的意见
蓝儿唯美
架构
Edo Interactive在几年前遇到一个大问题:公司使用交易数据来帮助零售商和餐馆进行个性化促销,但其数据仓库没有足够时间去处理所有的信用卡和借记卡交易数据
“我们要花费27小时来处理每日的数据量,”Edo主管基础设施和信息系统的高级副总裁Tim Garnto说道:“所以在2013年,我们放弃了现有的基于PostgreSQL的关系型数据库系统,使用了Hadoop集群作为公司的数
- spring学习——控制反转与依赖注入
a-john
spring
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。
- 用spool+unixshell生成文本文件的方法
aijuans
xshell
例如我们把scott.dept表生成文本文件的语句写成dept.sql,内容如下:
set pages 50000;
set lines 200;
set trims on;
set heading off;
spool /oracle_backup/log/test/dept.lst;
select deptno||','||dname||','||loc
- 1、基础--名词解析(OOA/OOD/OOP)
asia007
学习基础知识
OOA:Object-Oriented Analysis(面向对象分析方法)
是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)
- 浅谈java转成json编码格式技术
百合不是茶
json编码java转成json编码
json编码;是一个轻量级的数据存储和传输的语言
在java中需要引入json相关的包,引包方式在工程的lib下就可以了
JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非
常适合于服务器与 JavaScript 之间的数据的交
- web.xml之Spring配置(基于Spring+Struts+Ibatis)
bijian1013
javaweb.xmlSSIspring配置
指定Spring配置文件位置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-dao-bean.xml,/WEB-INF/spring-resources.xml,
/WEB-INF/
- Installing SonarQube(Fail to download libraries from server)
sunjing
InstallSonar
1. Download and unzip the SonarQube distribution
2. Starting the Web Server
The default port is "9000" and the context path is "/". These values can be changed in &l
- 【MongoDB学习笔记十一】Mongo副本集基本的增删查
bit1129
mongodb
一、创建复本集
假设mongod,mongo已经配置在系统路径变量上,启动三个命令行窗口,分别执行如下命令:
mongod --port 27017 --dbpath data1 --replSet rs0
mongod --port 27018 --dbpath data2 --replSet rs0
mongod --port 27019 -
- Anychart图表系列二之执行Flash和HTML5渲染
白糖_
Flash
今天介绍Anychart的Flash和HTML5渲染功能
HTML5
Anychart从6.0第一个版本起,已经逐渐开始支持各种图的HTML5渲染效果了,也就是说即使你没有安装Flash插件,只要浏览器支持HTML5,也能看到Anychart的图形(不过这些是需要做一些配置的)。
这里要提醒下大家,Anychart6.0版本对HTML5的支持还不算很成熟,目前还处于
- Laravel版本更新异常4.2.8-> 4.2.9 Declaration of ... CompilerEngine ... should be compa
bozch
laravel
昨天在为了把laravel升级到最新的版本,突然之间就出现了如下错误:
ErrorException thrown with message "Declaration of Illuminate\View\Engines\CompilerEngine::handleViewException() should be compatible with Illuminate\View\Eng
- 编程之美-NIM游戏分析-石头总数为奇数时如何保证先动手者必胜
bylijinnan
编程之美
import java.util.Arrays;
import java.util.Random;
public class Nim {
/**编程之美 NIM游戏分析
问题:
有N块石头和两个玩家A和B,玩家A先将石头随机分成若干堆,然后按照BABA...的顺序不断轮流取石头,
能将剩下的石头一次取光的玩家获胜,每次取石头时,每个玩家只能从若干堆石头中任选一堆,
- lunce创建索引及简单查询
chengxuyuancsdn
查询创建索引lunce
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Docume
- [IT与投资]坚持独立自主的研究核心技术
comsci
it
和别人合作开发某项产品....如果互相之间的技术水平不同,那么这种合作很难进行,一般都会成为强者控制弱者的方法和手段.....
所以弱者,在遇到技术难题的时候,最好不要一开始就去寻求强者的帮助,因为在我们这颗星球上,生物都有一种控制其
- flashback transaction闪回事务查询
daizj
oraclesql闪回事务
闪回事务查询有别于闪回查询的特点有以下3个:
(1)其正常工作不但需要利用撤销数据,还需要事先启用最小补充日志。
(2)返回的结果不是以前的“旧”数据,而是能够将当前数据修改为以前的样子的撤销SQL(Undo SQL)语句。
(3)集中地在名为flashback_transaction_query表上查询,而不是在各个表上通过“as of”或“vers
- Java I/O之FilenameFilter类列举出指定路径下某个扩展名的文件
游其是你
FilenameFilter
这是一个FilenameFilter类用法的例子,实现的列举出“c:\\folder“路径下所有以“.jpg”扩展名的文件。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
- C语言学习五函数,函数的前置声明以及如何在软件开发中合理的设计函数来解决实际问题
dcj3sjt126com
c
# include <stdio.h>
int f(void) //括号中的void表示该函数不能接受数据,int表示返回的类型为int类型
{
return 10; //向主调函数返回10
}
void g(void) //函数名前面的void表示该函数没有返回值
{
//return 10; //error 与第8行行首的void相矛盾
}
in
- 今天在测试环境使用yum安装,遇到一个问题: Error: Cannot retrieve metalink for repository: epel. Pl
dcj3sjt126com
centos
今天在测试环境使用yum安装,遇到一个问题:
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
处理很简单,修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉。即可。
&n
- 单例模式
shuizhaosi888
单例模式
单例模式 懒汉式
public class RunMain {
/**
* 私有构造
*/
private RunMain() {
}
/**
* 内部类,用于占位,只有
*/
private static class SingletonRunMain {
priv
- Spring Security(09)——Filter
234390216
Spring Security
Filter
目录
1.1 Filter顺序
1.2 添加Filter到FilterChain
1.3 DelegatingFilterProxy
1.4 FilterChainProxy
1.5
- 公司项目NODEJS实践0.1
逐行分析JS源代码
mongodbnginxubuntunodejs
一、前言
前端如何独立用nodeJs实现一个简单的注册、登录功能,是不是只用nodejs+sql就可以了?其实是可以实现,但离实际应用还有距离,那要怎么做才是实际可用的。
网上有很多nod
- java.lang.Math
liuhaibo_ljf
javaMathlang
System.out.println(Math.PI);
System.out.println(Math.abs(1.2));
System.out.println(Math.abs(1.2));
System.out.println(Math.abs(1));
System.out.println(Math.abs(111111111));
System.out.println(Mat
- linux下时间同步
nonobaba
ntp
今天在linux下做hbase集群的时候,发现hmaster启动成功了,但是用hbase命令进入shell的时候报了一个错误 PleaseHoldException: Master is initializing,查看了日志,大致意思是说master和slave时间不同步,没办法,只好找一种手动同步一下,后来发现一共部署了10来台机器,手动同步偏差又比较大,所以还是从网上找现成的解决方
- ZooKeeper3.4.6的集群部署
roadrunners
zookeeper集群部署
ZooKeeper是Apache的一个开源项目,在分布式服务中应用比较广泛。它主要用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步、集群管理、配置文件管理、同步锁、队列等。这里主要讲集群中ZooKeeper的部署。
1、准备工作
我们准备3台机器做ZooKeeper集群,分别在3台机器上创建ZooKeeper需要的目录。
数据存储目录
- Java高效读取大文件
tomcat_oracle
java
读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法: Files.readLines(new File(path), Charsets.UTF_8); FileUtils.readLines(new File(path)); 这种方法带来的问题是文件的所有行都被存放在内存中,当文件足够大时很快就会导致
- 微信支付api返回的xml转换为Map的方法
xu3508620
xmlmap微信api
举例如下:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><