barriers / 阅读 / 详情

Android 轻量级存储方案(SharedPreferences、MMKV、Jetpack DataStore)

2023-08-24 09:44:09
共1条回复
可乐
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!

SharedPreferences使用:

SharedPreferencesImpl#EditorImpl.java 中最终执行了apply()函数:

创建一个awaitCommit的Runnable任务并将其加入到QueuedWork中,该任务内部直接调用了CountDownLatch.await()方法,即直接在UI线程执行等待操作,那么我们看QueuedWork中何时执行这个任务。

QueuedWork.java:

waitToFinish()方法会尝试从Runnable任务队列中取任务,如果有的话直接取出并执行,我们看看哪里调用了waitToFinish():

ActivityThread.java

可以看到在ActivityThread中handleStopActivity、handleStopService方法中都会调用waitToFinish()方法,即在Activity的onStop()中、Service的onStop()中都会先同步等待写入任务完成才会继续执行。

所以apply()虽然是异步写入磁盘,但是如果此时执行到Activity/Service的onStop(),依然可能会阻塞UI线程导致ANR。

u2003u2003 Jetpack DataStore 是一种改进的数据存储解决方案,允许您使用 协议缓冲区 存储键值对或类型化对象。

u2003u2003DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。并且可以对SP数据进行迁移,旨在取代SP。如果正在使用 SharedPreferences 存储数据,请考虑迁移到 DataStore。

Jetpack DataStore 有两种实现方式:

1.添加依赖项:

2.构建Preferences DataStore:

当我们构建后,会在 /data/data/<package name>/files/ 下创建名为 preferences_dataStore 的文件如下:

1.构建Preferences DataStore

2.存储的实体类:

3.数据存储/获取:

Activity中:

ViewModel中:

Repository类中:

SP迁移至Preferences DataStore

如果想将项目的SP进行迁移,只需要在Preferences DataStore在构建时配置参数3,如下:

这样构建完成时,SP中的内容也会迁移到Preferences DataStore中了,注意迁移是一次性的,即执行迁移后,SP文件会被删除.

MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。

1.添加依赖:

2.Application的onCreate方法中初始化

3.数据存储/获取:

github地址: https://g****.com/HuiZaierr/Android_Store

相关推荐

付款状态是queued 是什么意思

排队中。。。。。。
2023-08-17 06:47:221

sql server 发送邮件mail queued.为什么

为了安全起见,微软将数据中的一些可能带来安全隐患的一些功能组件禁用掉了,数据库邮件和SQL MAIL都在被禁用之列,因些第一步是通过外围配置器将这两个功能组件启用。启用之后进入SQL SERVER2005管理界面(SQL SERVER 2005 MANGEMENT STUDIO)找到管理节点,就可以找到数据库邮件子项,在右键菜单中会有一个"配置数据库邮件"菜单,按照步骤先建立配置文件,然后创建账号,保存退出。在右键菜单的第二项"发送测试邮件",在弹出的窗口中输入接收的邮件地址,发送就可以。
2023-08-17 06:47:471

failed command write fpdma queued是怎么回事

failed command write fpdma queued是怎么回事为什么会得这样的结果呢?分析宏调用语句,在宏代换之后变为: sq=160/(a+1)*(a+1);a为3时,由于“/”和“*”运算符优先级和结合性相同,则先作160/(3+1)得40,再作40*(3+1)最后得160。为了得到正确答案应在宏定义中的整个字符串外加括号,程序修改如下:【例9.8】#define SQ(y) ((y)*(y))main(){ int a,sq; printf("input a number: "); scanf("%d",&a); sq=160/SQ(a+1); printf("sq=%d ",sq);}以上讨论说明,对于宏定义不仅应在参数两侧加括号,也应在整个字符串外加括号。5. 带参的宏和带参函数很相似,但有本质上的不同,除上面已谈到的各点外,把同一表达式用函数处理与用宏处理两者的结果有可能是不同的。【例9.9】main(){ int i=1; while(i<=5) printf("%d ",SQ(i++));}SQ(int y)
2023-08-17 06:47:551

Presto Web UI

Presto Web UI 可以用来检查和监控Presto集群,以及运行的查询。他所提供的关于查询的详细信息可以更好的理解以及调整整个集群和单个查询。 需要注意的是,Presto Web UI所展示的信息都来自于Presto系统表,关于Presto系统表之后文章中再补充,这里不再多说; 当你进入Presto Web时,你将会看到如同1所示的界面:主要分为上下两部分,上面描述了集群信息,下面是查询列表; Running Queries 当前在集群中正在执行的查询的个数。包含所有用户提交的查询;例如,如果Alice正在执行两个查询,Bob正在执行五个查询,那么在这个指标下显示的是7。 Queued Queries 当前集群队列中正在等待的查询的个数,也是包含所有用户的查询。队列中的查询表示这些查询正在等待Coordinator根据Resource Group的配置为他们安排调度; Blocked Queries 集群中被阻塞的查询的个数;被阻塞的查询意味着该查询因为缺少可用的Splits或者资源而无法继续执行(关于Splits的概念 以及查询何时被阻塞可以参考上一篇文章:Presto On Everything); Active Workers 集群中当前活跃的节点的个数;任何手动会自动添加或删除的节点都会注册到Discovery 服务,同时这里展示的数字将会更新、 Runnable Drivers 集群中可运行的Drivers的平均数量(当Task被创建之后,他为每一个Split实例化一个Driver,每一个Driver就是一个Pipeline 中Operators的实例,并对来自Split的数据进行处理,一旦Driver完成,数据将会被传给下一个Split), Reserved Memory 集群中Reserved Memory的大小,单位是bytes。(关于Reserved Memory的概念请参考上一篇文章:Presto On Everything) Rows/Sec 集群中所有查询在每一秒钟处理的行数 Bytes/Sec 集群中所有查询在一秒钟处理的总共的Bytes Worker Parallelism Worker的并发总数,在集群中运行的所有Worker和所有查询的CPU Time总和 WBE UI首页下部分就是查询列表的展示,当前列表中可以展示的查询的数量时可以配置的。如图二所示 如图所示你可以根据一些条件过滤和定位你想要的查询;同时提供了搜索输入框用于定位查询,输入的值会匹配很多项,包括:用户名、查询发起人,查询source,查询ID,resource group甚至SQL文本,和查询状态。同样你可以根据后面预设的一些状态(running, queued, finished, and failed)对查询进行筛选; 最左边的控件允许你确定显示的查询的排序顺序、重新排序的时间以及要显示的查询的最大数量。 下面的每一行表示一个查询,左侧如图三所示,右侧为查询的SQL文本; 根据图三可以观察当前查询的细节; 对于每个查询运行,左上角的文本是查询ID,图三中为: 20190803_224130_00010_iukvw 前面是YYYYMMDD_HHMMSS格式的日期,具体的时间是当前查询运行时的时间,后半部分是一个自增的计数器,00010的含义表示这个查询时Coordinator重启以来第10个查询,最后的字符:iukvw,是随机生成的Coordinator的标识符,每次coordinator重启会充值标识符和计数器。 后面紧跟的三个值: ec2-user , presto-cli , 以及global 分别表示,提交该查询的用户,查询的来源,当前查询的Resource Group。在实例中,当前查询的用户是ec2-user,查询时通过Presto-cli提交的,如果你在Presto CLI中提交SQL 时使用--user指定用户,那么界面该查询展示的就是你所指定的用户。至于查询来源除了Presto-CLI之外也可以是:Presto-jdbc ,当你使用JDBC连接Presto时。 图三最下面的9个指标对应下面的表格; Completed Splits : 查询的已完成Splits的数目。这个例子显示了25个已完成的Splits。在查询执行的开始时和执行完成时这个值是0。当查询正在进行期间这个值会一直增加 Running Splits : 查询中正在运行的运行Splits的数量。当查询完成时,这个值总是0。但是,在执行过程中,随着Splits的运行和完成,这个数字会发生变化 Queued Splits : 当前查询里出于队列中的Splits数。当查询完成时,这个值总是0。但是,在执行期间,这个数字会发生变化。 Wall Time : 执行查询所花费的Wall Time。即使在分页结果时,此值也会继续增长。 Total Wall Time : 此值与Wall Time相同,但它也包括排队时间。Wall Time不包括查询排队的任何时间。这是您观察的总时间,从您提交查询到您接收结果。 CPU Time : 处理查询所花费的总CPU时间。这个值通常比wallTine时间大,因为如果使用四个CPU花费1秒来处理一个查询,那么总的CPU时间是4秒。 Current Total Reserved Memory :当前用于查询执行总的reserved memory使用。对于已完成的查询,此值为0. Peak Total Memory : 查询执行期间的峰值总内存使用量。查询执行期间的某些操作可能需要大量内存,了解峰值是多大是很有用的 Cumulative User Memory : 在整个查询处理过程中使用的累积内存。这并不意味着所有的内存都是同时使用的。它是累积的内存总量。 Presto Web UI中的许多图标和值都有弹出的工具提示,当您将鼠标悬停在图像上时,这些工具提示是可见的。如果您不确定某个特定值代表什么,这将非常有用。 当正在运行的查询在等待某些东西(如资源或要处理的其他Splits)时可能会发生BLOCKED状态。看到查询往返于此状态是正常的,但是如果查询陷入BLOCKED状态,可能存在许多潜在的理由,这可能表明当前查询或者集群可能存在问题,如果发现有查询卡在这个状态,那么应该检查集群的状态和相关配置,也可能是这个查询需要非常大的内存或者计算开销很大。 此外,如果客户端没有获取到返回的结果,或者不能足够快地读取结果,反压机制也会使查询处于BLOCKED状态 如果查询长时间出于PLANNING状态,这通常发生在较大的复杂的查询中,因为查询要进行大量的规划和优化处理;但是如果你经常看到这个状态,并且查询出于该状态很长时间,那很可能是因为coordinator内存问题导致的(之前曾遇到过因HiveMetaStore服务而导致的长时间的PLANNING状态)。 通过点击查询ID可以跳转到该查询的明细界面,如图四所示 Overview页面包括查询列表的查询细节信息如图4.1下: 最下面为Stage部分如图5所示 这是一个简单的SELECTCOUNT(*)的查询,所以只有两个stages Stage0 是一个单任务的Stage,运行在coordinator上并且合并来自Stage1的Task(共4个)的数据,以完成最后的聚合; Stage1是一个分布式的Stage,他在所有的Worker上执行Task,这个Stage负责读取数据并进行部分聚合; 其中每个Stage的指标如下: TIME—SCHEDULED 在完成Stage的所有Task之前,该Stage被调度的时间。 TIME—BLOCKED 因等待数据被阻塞的时间 TIME—CPU Stage中所有Task的总共的CPU时间 MEMORY–CUMULATIVE 在整个Stage 运行期间的累积内存。这并不意味着所有的内存都是同时使用的 MEMORY—CURRENT 当前stage总共的reserved内存,当查询结束时,改值为0 MEMORY—BUFFERS 当前正在等待被处理的数据所消耗的内存 MEMORY—PEAK 该Stage的峰值总内存。查询执行期间的某些操作可能需要大量内存,了解峰值是多少是很有用的。 TASKS—PENDING Stage中待完成的Task的数量,执行完成时,为0 TASKS—BLOCKED stage阻塞Task的数量。当查询完成时,这个值总是0。但是,在执行过程中,随着Task在阻塞状态和运行状态之间移动,这个数字会发生变化 TASKS—TOTAL 已经完成的Task的数量 最后的图6描述了Stage更多的细节: 如图6中指标具体含义如下表所示: ID:Task的标识符,StageID.TaskID,中间用点分割,如0.0即Stage0的第0个任务 Host:Task运行所在的Worker节点 State :Task的状态:PENDING , RUNNING , or BLOCKED Pending Splits:Task的挂起的Splits的数量。此值在Task运行时更改,并在Task完成时显示0 Running Splits:Task 中正在运行的Splits的数量,在Task运行时改变,Task完成后显示0 Blocked Splits:Task 中出于阻塞状态的任务数,Task完成后为0 CompletedSplits:Task完成的Splits的数量 Rows:Task处理的行数 Rows/s:每秒处理的行数 Bytes:Task处理的字节数 Bytes/s:Task每秒处理的字节数 | Elapsed:Task调度期间 wall time的总和 CPU Time:Task调度期间CPU时间总和 Buffered:当前等待被处理的缓存数据大小 Live Plan页面中你可以实时查询执行处理过程;如图7所示 在查询执行期间,计划中的计数器在查询执行过程中更新。Plan中的值与Overview选项卡中描述的相同,但是它们在查询执行计划上实时覆盖。 查看此视图有助于可视化查询被阻塞或花费大量时间的位置,以便诊断或改进性能问题 Stage Performance提供了查询处理完成后Stage 性能的详细可视化。如图8所示 该视图可以看作是Live Plan视图的下钻,在Live Plan视图中可以看到Stage中Task的operator pipeline。计划中的值与Overview选项卡中描述的值相同。 查看此视图有助于了解查询在何处卡住或花费大量时间,以便诊断或修复性能问题。您可以单击每个operator来访问详细信息
2023-08-17 06:48:021

ou must have at least one render item queued in order to render AE里出现这个怎么解决 渲染不了

AE输出遇到You must have at least one render item queued in order to render在你要渲染的项目左边小方框里打钩,使要渲染的项目状态(Status)从Unqueued显示为Queued后再点Render渲染按钮。
2023-08-17 06:48:131

BLE定制服务Service中的queued write模块是干什么的?

service 模块name参数:此参数用于指定需要操作的服务名称,比如 nginx。 state参数:此参数用于指定服务的状态,比如,我们想要启动远程主机中的 nginx,则可以将 state 的值设置为 started;如果想要停止远程主机中的服务,则可以将 state 的值设置为 stopped。此参数的可用值有 started、stopped、restarted、reloaded。 enabled参数:此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动。arguments 给命令提供一些选项runlevel 运行等级sleep 如果运行看restarted 则stop and start 之间沉睡几秒中
2023-08-17 06:48:201

上古卷轴5用NMM,添加mod文件(压缩包)不成功,而下方的下载队列中则会出现一个任务。

不要添加 会很慢的 直接把压缩包剪贴到 NMM创建的Games/Nexus Mod Manager/Skyrim/Mods就可以了 。 然后打开NMM需要等几分钟就可以看到那个安装包了
2023-08-17 06:48:561

kiwix(iOS版)无法下载资源库(如图 显示队列中queued );可以刷新(如图 显示ret

挂一个VPN有时可以。
2023-08-17 06:49:331

WINDOWS XP 在Telnet SMTP 发邮件,最后返回的结果永远是“Queued mail for delivery”

说明邮件已经进入了投递队列, smtp后面的服务是否没有启动或者是有阻塞了
2023-08-17 06:50:021

mosquitto 参数怎么配置

1.retry_interval 当QoS为1或2的消息已经被发送后,mosquitto在一段时间内仍未接收到客户端的反馈消息,将重新发送消息。默认为20秒2.sys_interval 每隔一段时间将更新$SYS层级话题的状态,其中包含着proker的状态信息。默认为10秒3.store_clean_interval表示间隔多长时间将不再被使用的消息销毁掉。该值越小,使用的内存就会越小但会需要更多的处理时间。如果设置为0,表示不被使用的消息将会及时销毁。默认为10秒4.pid_file 默认为/var/run/mosquitto.pid5.user 设置mosquitto启动用户6.max_inflight_messages 表示允许多大数量的QoS为1或2消息被同时进行传输处理。这些消息包括正在进行握手的消息和进行重新发送的消息。默认为20个,如果设置为0,表示不设限制;如果为1,则会确保消息被顺序处理。7.max_queued_messages表示允许多大数量的QoS为1或2消息在队列中进行排队。默认为100个8.max_connections设置最大的连接数 -1表示不限制9.autosave_interval表示当开启持久化设置时,间隔多少时间mosquitto会把内存中的消息保存到磁盘中。默认为30分钟,当设置为0时,只有mosquitto关闭的时候才会写的磁盘中。10.persistence设置为true时,所有的连接,订阅和消息数据都会被保存到磁盘的mosquitto.db文件中。当mosquitto重启的时候,它会从mosquitto.db文件中重新加载数据。11.persistence_location 默认为/var/lib/mosquitto/12.log_dest 设置日志的输出目的地可以是:stdoutstderrsyslogtopic 如果输出到某个文件的话可以这样设置log_destfile/var/log/mosquitto.log 要赋予对mosquitto.log文件的读写权限。13.log_type 日志类型:debug,error,warning,notice,information,subscribe,unsubscribe,websockets,none,all14.log_timestamp 是否记录日志时间15.clientid_prefixes设置只有clientId以某个前缀开始的客户端才允许连接到mosquittobroker.16.allow_duplicate_messages如果一个客户端订阅了多个topic时,设置是否允许接收重复的消息。比如订阅了foo/#和foo/+/baz。17.autosave_on_changes Iftrue,mosquittowillcountthenumberofsubscriptionchanges,retainedmessagesreceivedandqueuedmessagesandifthetotalexceedsautosave_intervalthenthein-memorydatabasewillbesavedtodisk.Iffalse,mosquittowillsavethein-memorydatabasetodiskbytreatingautosave_intervalasatimeinseconds18.persistent_client_expiration持久订阅的过期设置。对于将cleansession设置为false的持久订阅客户端,如果在一定的时间段里面没有重新连接mosquitto将会被移除。这并不是一个标准的配置项,因为对于MQTT协议来说所有的持久订阅应该是永远有效的。如: persistent_client_expiration2m  persistent_client_expiration14d persistent_client_expiration1y h:小时  d:天  m:月  y:年19.queue_qos0_messages 是否将QoS为0的消息计算到max_queued_messages参数中更多相关内容可参考资料http://www.viiboo.cn
2023-08-17 06:50:191

如何查看hbase数据库当前的状态

可以访问以下网站查看hbase服务状态及master等等信息,http。//retailvm1d。nam。nsroot。net。60010/zk.jspHBase is rooted at /hbaseActive master address: retailvm1d,39706,1377502441684Backup master addresses:Region server holding ROOT: retailvm1d,38110,1377502442130Region servers: retailvm1d,38110,1377502442130Quorum Server Statistics: localhost:2181 Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /127.0.0.1:36679[1](queued=0,recved=441,sent=448) /127.0.0.1:36681[1](queued=0,recved=502,sent=503) /127.0.0.1:36678[1](queued=0,recved=521,sent=543) /127.0.0.1:37218[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/159 Received: 1533 Sent: 1562 Connections: 4 Outstanding: 0 Zxid: 0x49 Mode: standalone Node count: 23
2023-08-17 06:50:261

求与字母Q发音相同的英语单词(10分)

queue[kju:]n.行列, 长队, 队列vi.排队, 排队等待queuequeueAHD:[kyu203a] D.J.[kju8]K.K.[kju]n.(名词)A line of waiting people or vehicles.行列:排队等待的人或车辆A long braid of hair worn hanging down the back of the neck; a pigtail.辫子:从脖子后部拖下来的一缕长发;辫子Computer Science A sequence of stored data or programs awaiting processing.【计算机科学】 一系列等待处理的储存数据或程序v.intr.(不及物动词)queued, queu.ing, queuesTo get in line:排队:queue up at the box office.在售票处排队
2023-08-17 06:50:355

QUEUED FOR MANUAL HANDLING/PNR CANCELLED 什么意思 急!!!

排队等待体力处理/名册取消
2023-08-17 06:50:512

排很长的队 怎么说?是queue for a long turn么

it is a long queuethe queue is longi have queued for a long time
2023-08-17 06:50:591

AE输出遇到You must have at least one render item queued in order to render怎么解决

可能是没有指明视频要输出的目地文件路径
2023-08-17 06:51:273

redis的set指令具有原子性吗

1、redis事物通过multi命令开始。这条命令总是返回ok。2、然后用户可以执行多条指令,redis不会马上执行这些指令,还只是放入到队列中。3、当执行exec指令时,所有的指令执行。4、调用discard指令,将会flush事物队列,并且退出事物。如下:redis127.0.0.1:6379multiokredis127.0.0.1:6379setfoo1queuedredis127.0.0.1:6379incrfooqueuedredis127.0.0.1:6379incrfooqueuedredis127.0.0.1:6379exec1)ok2)(integer)23)(integer)3如以下:redis127.0.0.1:6379multiokredis127.0.0.1:6379sett13queuedredis127.0.0.1:6379lpoptqueuedredis127.0.0.1:6379exec1)ok2)(error)erroperationagainstakeyholdingthewrongkindofvalue对于这种err,需要客户端给予合理的提示。需要注意的是,所有在队列中的指令都会被执行,redis不会终止指令的执行(事物中有指令失败事物不会终止在这条失败的指令上)。三、mutil总是返回ok,然后调用get,set写数据,这些指令会被提交到队列,discard取消命令队列,不执行事物:discard为取消命令队列。可以终断一个事物。不会有命令会被执行,并且连接的状态是正常的。如:setfoo1okmultiokincrfooqueueddiscardokgetfoo"1"四、redis的optimisticlockingusingcheck-and-set(乐观锁),实现get,set命令序列数据的原子性:watch指令在redis事物中提供了cas的行为。为了检测被watch的keys在是否有多个clients改变时引起冲突,这些keys将会被监控。例如:一个key自增长(假设redis不提供incr的功能)val=getmykeyval=val+1setmykey$val以上指令执行,如果是单一的client,整个操作是没问题的。如果多个client在同一时间操作。如clienta与clientb读取了老的值,假如是10,这个值在两个client将会被增长到11,最后set这个key值时,这个key最终是11还不是12.watch能够很好的处理这种问题:watchmykeyval=getmykeyval=val+1multisetmykey$valexec使用以上代码,如果在执行watch与exec指令这段时间里有其它客户端修改此key值,此事物将执行失败。以上形式的锁被称为乐观锁。
2023-08-17 06:51:471

Java程序卡住,在jstack输出调用栈之后恢复,可能是什么原因

我也在生产环境碰到两次,最初以为是jre问题,后来更换了没有用,现在在排查探针的问题,楼主有发现原因么?
2023-08-17 06:52:021

英语高手进来~ queue for 是不是=queue up for 其实up是可省略的? 有什么区别..

要这么理解: queue up是一个动词短语,排队 后面接for ... 表示目的,为...排队 We queued up for the bus. 我们排队等公共汽车. 也可以直接接for表目的We had to queue for three hours to get in. 我们排队等了3个小...
2023-08-17 06:52:091

Windows磁盘清理中“系统队列中的Windows错误报告”为什么这么大?

系统队列中的Windows错误报告(System queued Windows Error Reporting)是Windows系统在发生错误时自动收集的一些错误报告,这些报告可能会占用较多的磁盘空间。如果您的系统在过去发生过很多错误,那么系统队列中的错误报告可能会很大。如果您想清理磁盘空间,可以考虑删除这些系统队列中的错误报告。您可以按照以下步骤进行操作:打开磁盘清理工具。在Windows资源管理器中右键单击要清理的磁盘,选择“属性”,在“常规”选项卡中点击“磁盘清理”。在磁盘清理工具中,勾选“系统文件”复选框,然后点击“确定”。磁盘清理工具会重新扫描磁盘,这次扫描会包括系统文件。在扫描完成后,您需要再次勾选“系统队列中的Windows错误报告”复选框,然后点击“确定”。在确认要删除这些文件后,点击“清理系统文件”按钮。这将删除系统队列中的错误报告,从而释放磁盘空间。请注意,删除系统队列中的错误报告可能会影响系统故障排查和错误修复。如果您对这些报告感兴趣,请在删除它们之前备份它们。
2023-08-17 06:52:172

如何查看hbase数据库当前的状态

可以访问以下网站查看hbase服务状态及master等等信息,http。//retailvm1d。nam。nsroot。net。60010/zk.jspHBase is rooted at /hbaseActive master address: retailvm1d,39706,1377502441684Backup master addresses:Region server holding ROOT: retailvm1d,38110,1377502442130Region servers:retailvm1d,38110,1377502442130Quorum Server Statistics:localhost:2181Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMTClients:/127.0.0.1:36679[1](queued=0,recved=441,sent=448)/127.0.0.1:36681[1](queued=0,recved=502,sent=503)/127.0.0.1:36678[1](queued=0,recved=521,sent=543)/127.0.0.1:37218[0](queued=0,recved=1,sent=0)Latency min/avg/max: 0/0/159Received: 1533Sent: 1562Connections: 4Outstanding: 0Zxid: 0x49Mode: standaloneNode count: 23
2023-08-17 06:52:271

Process 2185 terminated by signal 怎么解决

Linux supports real-time signals as originally defined in the POSIX.4 real-time extensions (and now included in POSIX 1003.1-2001). Linux supports 32 real-time signals, numbered from 32 (SIGRTMIN) to 63 (SIGRTMAX). (Programs should always refer to real-time signals using notation SIGRTMIN+n, since the range of real-time signal numbers varies across Unices.)Unlike standard signals, real-time signals have no predefined meanings: the entire set of real-time signals can be used for application-defined purposes. (Note, however, that the LinuxThreads implementation uses the first three real-time signals.)The default action for an unhandled real-time signal is to terminate the receiving process.Real-time signals are distinguished by the following:1.Multiple instances of real-time signals can be queued. By contrast, if multiple instances of a standard signal are delivered while that signal is currently blocked, then only one instance is queued.2.If the signal is sent using sigqueue(2), an accompanying value (either an integer or a pointer) can be sent with the signal. If the receiving process establishes a handler for this signal using the SA_SIGACTION flag to sigaction(2) then it can obtain this data via the si_value field of the siginfo_t structure passed as the second argument to the handler. Furthermore, the si_pid and si_uid fields of this structure can be used to obtain the PID and real user ID of the process sending the signal.3.Real-time signals are delivered in a guaranteed order. Multiple real-time signals of the same type are delivered in the order they were sent. If different real-time signals are sent to a process, they are delivered starting with the lowest-numbered signal. (I.e., low-numbered signals have highest priority.)If both standard and real-time signals are pending for a process, POSIX leaves it unspecified which is delivered first. Linux, like many other implementations, gives priority to standard signals in this case.According to POSIX, an implementation should permit at least _POSIX_SIGQUEUE_MAX (32) real-time signals to be queued to a process. However, rather than placing a per-process limit, Linux imposes a system-wide limit on the number of queued real-time signals for all processes. This limit can be viewed (and with privilege) changed via the /proc/sys/kernel/rtsig-max file. A related file, /proc/sys/kernel/rtsig-max, can be used to find out how many real-time signals are currently queued.
2023-08-17 06:52:351

redis为什么需要watch

不知道你说的watch是啥意思,php操作redis很简单的,举个例子:<?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect("127.0.0.1", 6379); echo "Connection to server sucessfully"; //设置 redis 字符串数据 $redis->set("tutorial-name", "Redis tutorial"); // 获取存储的数据并输出 echo "Stored string in redis:: " . $redis->get("tutorial-name");?>这是操作字符串的,还有操作其他redis数据类型的。要成功先确保你php有装redis扩展,并且本地redis服务正常跑着的。如果没有解决你的问题的话,麻烦你解释一下问题吧,你看都没人回你,因为你问题不清楚啊。如果解决了,就请采纳吧。
2023-08-17 06:52:432

请教函数参数的问题,代码如下:

(LPDWORD)&PerHandleData前面的括号内是强制类型转换,该函数第3个参数是个指向LPDWORD的指针
2023-08-17 06:53:091

you are currently queued for processing,please check back later,是什么意思

您所办理的业务正在排队处理,请稍后查询。
2023-08-17 06:53:172

如何关闭 mscorsvw.exe 这个进程,打了360补丁就出现此问题,各位大侠赶快来帮忙解决,小弟感激不尽。

这个进程其实是 .net 2.0的进程解决方法1: Microsoft Common Language Runtime Service Host 这个服务 设置成开机手动。“不是病毒,mscorsvw.exe是在后台预编译.net的assemblies。一旦它执行完毕,就停止。一般来说,当你安装了.NET的分发程序,它就会先用5到10分钟预编译那些高优先级的assemblies,然后等到你的电脑空闲的时候再去处理那些低优先级的assemblies 。一旦它全部处理完毕,它将会终止,你将不会再看到mscorsvw.exe。如果你真的想要从你的任务管理器中消除mscorsvw.exe可以这样做:ngen.exe executequeueditems这就可以让其后所有排队等候的进程开始工作。”解决方法2:不是从开始-运行-输入“ngen.exe executequeueditems”执行;就是开始-运行-输入CMD---进入命令行窗口--输入“ngen.exe executequeueditems”执行。
2023-08-17 06:53:251

AE 渲染时提示You must at least one render item queued in order to render无法渲染

御姐之友是正解!
2023-08-17 06:53:334

HTTP Status 500 - 如何解决

如果这个网站(或系统)不是你开发的话,不用你来解决,你可以把错误代码发给开发者,这是一个明显的bug。他的JSP中没有import java.uitl.Date或者很可能import java.sql.Date,所以出现了这个问题。java.util.Date的构造函数支持无参构造,java.sql.Date不支持。
2023-08-17 06:53:442

在完成端口的设置上PostQueuedCompletionStatus()到底有什么用

把IOCP当一个线程安全的堆栈来用,线程同步中经常用
2023-08-17 06:53:522

英语题目快快啊啊啊啊

看不清
2023-08-17 06:54:125

求翻译:

mm
2023-08-17 06:54:304

车票用英语该用哪个单词

你好!车票ticket 英[u02c8tu026aku026at] 美[u02c8tu026aku026at] n. 票,入场券; 标签; 传票,交通违规的通知单; <美>候选人名单; vt. 售票; 给…门票; 加标签于,指派; 对。。开交通违章通知单; [例句]I queued for two hours to get a ticket to see the football game我排了两个小时的队,就是为了买张足球赛的票。
2023-08-17 06:54:391

iocp原理

IOCP简介提到IOCP,大家都非常熟悉,其基本的编程模式,我就不在这里展开了。在这里我主要是把IOCP中所提及的概念做一个基本性的总结。IOCP的基本架构图如下:如图所示,在IOCP中,主要有以下的参与者:--》完成端口:是一个FIFO队列,操作系统的IO子系统在IO操作完成后,会把相应的IO packet放入该队列。--》等待者线程队列:通过调用GetQueuedCompletionStatus API,在完成端口上等待取下一个IO packet。--》执行者线程组:已经从完成端口上获得IO packet,在占用CPU进行处理。除了以上三种类型的参与者。我们还应该注意两个关联关系,即:--》IO Handle与完成端口相关联:任何期望使用IOCP的方式来处理IO请求的,必须将相应的IO Handle与该完成端口相关联。需要指出的时,这里的IO Handle,可以是File的Handle,或者是Socket的Handle。--》线程与完成端口相关联:任何调用GetQueuedCompletionStatus API的线程,都将与该完成端口相关联。在任何给定的时候,该线程只能与一个完成端口相关联,与最后一次调用的GetQueuedCompletionStatus为准。
2023-08-17 06:54:481

文件监视ReadDirectoryChangesW

好深敖哦!不懂耶!
2023-08-17 06:55:054

英语翻译

许多退休人士排队再次体验“剑拔弩张电车”,他们的青春的记忆中。“电车新举措更平稳,因为噪音低”一名85岁男子说.
2023-08-17 06:55:151

怎么使用WSS4J API进行对消息解密

org.apache.cxf.binding.soap.SoapFault: The signature or decryption was invalid; nested exception is: <span style="color: #FF0000;">java.lang.Exception: alias is null</span> at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.createSoapFault(WSS4JInInterceptor.java:561) at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:309) at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:312) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:276) at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:930) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:834) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
2023-08-17 06:55:341

怎么每次从队列里取出1000条数据并用事物提交

此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列检索操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。可选的容量范围构造方法参数作为防止队列过度扩展的一种方法。如果未指定容量,则它等于 Integer.MAX_VALUE。除非插入节点会使队列超出容量,否则每次插入后会动态地创建链接节点。1:如果未指定容量,默认容量为Integer.MAX_VALUE ,容量范围可以在构造方法参数中指定作为防止队列过度扩展。2:此对象是 线程阻塞-安全的3:不接受 null 元素4:它实现了BlockingQueue接口。5:实现了 Collection 和 Iterator 接口的所有可选 方法。6:在JDK5/6中,LinkedBlockingQueue和ArrayBlocingQueue等对象的poll(long timeout, TimeUnit unit)存在内存泄露Leak的对象AbstractQueuedSynchronizer.Node,据称JDK5会在Update12里Fix,JDK6会在Update2里Fix
2023-08-17 06:55:432

jquery.uploadify.js:72 出现 Uncaught Call to GetStats failed

处理什么效果时会这样呢,显示图片还是?
2023-08-17 06:55:523

QT中使用一个信号量来写日志文件?

你的代码我是懒得看了;看了前面一点,就觉得你这写的有问题,没有充分利用QT带的功能。给你个我的思路:(1) 新启动一个QThread thread,该线程只运行一个事件循环(QEventLoop loop; loop.exec();)(2)将写日志文件功能单独抽象成一个继承QObject的类LogHelpclass LogHelp :public QObject{Q_OBJECTpublic:void Write(QString log){emit NotifyWrite(log);}signal:void NotifyWrite(QString log);public slot:void OnWrite(QString log){/*你的核心写文件代码*/}; (3)LogHelp logHelp 对象需要 movetothread 到(1)中创建的线程;logHelp.moveToThread(&thread);(4)重点:connect(&logHelp,SIGNAL(NotifyWrite(QString)),&logHelp,SLOT(OnWrite(QString)),Qt::QueuedConnection);如此你就可以在其它线程中直接调用logHelp .Write(log);不用管数据安全问题。代码手敲,可能有问题,只是告诉你个思路。这样写不用维护队列,使用的是信号和槽函数的异步队列方式。
2023-08-17 06:56:011

什么是Java中的公平锁

首先Java中的ReentrantLock 默认的lock()方法采用的是非公平锁。也就是不用考虑其他在排队的线程的感受,lock()的时候直接询问是否可以获取锁,而不用在队尾排队。下面分析下公平锁的具体实现。重点关注java.util.concurrent.locks.AbstractQueuedSynchronizer类几乎所有locks包下的工具类锁都包含了该类的static子类,足以可见这个类在java并发锁工具类当中的地位。这个类提供了对操作系统层面线程操作方法的封装调用,可以帮助并发设计者设计出很多优秀的APIReentrantLock当中的lock()方法,是通过static 内部类sync来进行锁操作public void lock(){sync.lock();}//定义成final型的成员变量,在构造方法中进行初始化private final Sync sync;//无参数默认非公平锁public ReentrantLock(){sync = new NonfairSync();}//根据参数初始化为公平锁或者非公平锁public ReentrantLock(boolean fair){sync = fair ? new FairSync() : new NonfairSync();}
2023-08-17 06:56:101

在android 3.2 google tv开发中,运行一段时间后显示dialog时报runtime异常。但之前一段时间是不会出错。

应该是内存的问题,你用ddms看一下内存信息吧
2023-08-17 06:56:181

线程池中的线程执行完毕时,如何回收或释放资源?

.net会自动处理垃圾回收的,不过回收周期比较长,你才有这种耽心,其实不必去理会它
2023-08-17 06:56:251

JS中怎么实现sleep的功能

1. jquery的$.delay()方法设置一个延时来推迟执行队列中之后的项目。这个方法不能取代JS原生的setTimeout。The .delay() method is best for delaying between queued jQuery effects. Because it is limited—it doesn"t, for example, offer a way to cancel the delay—.delay() is not a replacement for JavaScript"s native setTimeout function, which may be more appropriate for certain use cases.例子:在.slideUp() 和 .fadeIn()之间延时800毫秒。HTML 代码:<div id="foo /">jQuery 代码:$("#foo").slideUp(300).delay(800).fadeIn(400);2. 通过循环消耗cpu function sleep(n) { var start = new Date().getTime(); while(true) if(new Date().getTime()-start > n) break; }3. 用setTimeout。假设有三个步骤,步骤之间需要暂停一段时间;可以采用如下的方法:function firstStep() {//do somethingsetTimeout("secondStep()", 1000);}function secondStep() {//do somethingsetTimeout("thirdStep()", 1000);}function thirdStep() {//do something}
2023-08-17 06:57:071

entry和entrance有什么区别?

进入的意思。前个一般做动词用。后个名词,入口。词性的差别~
2023-08-17 06:57:174

access 是什么意思

【access 解释】n. 1. 接近,进入;接近的机会,进入的权利;使用 2. 通道,入口,门路 3. (病的)发作;(怒气等的)爆发 4. 访问;取出vt. 1. To gain or have access to. 1. 取出(资料);使用;接近 E.解释 C.变化 L.上一个 access N.下一个
2023-08-17 06:58:209

如何重写abstractexecutorservice

1、首先来看一段使用示例 ExecutorService recmdService = Executors. newFixedThreadPool(1); Future<List<Long>> recmdFuture = recmdService.submit( new Callable<List<Long>>() { @Override public List<Long> call() throws Exception { /* * do something here */ return result; } }); /* * do something here. */ List<Long> recmdPoiIds = null; try { recmdPoiIds = recmdFuture.get(10, TimeUnit. SECONDS); } catch (Exception e) { logger.error("error information " , e); recmdPoiIds = new ArrayList<Long>(); } 上面的示例代码来自于工作中出现的一段使用Executor框架的示例,当然也只能算是对Executor框架的一种非常简单的应用。大体的意思是在执行主体任务的同时重新开了一个线程去同步执行另一个任务。然后再主体任务执行完后,同时去获取在这个新开的线程中执行任务的结果。 示例虽然简单,但其中也包括了Executor的一些基本组成元素,也是了解Executor所需要的最基本的东西:任务在一个单独的线程中执行、任务提交时返回一个Future对象、通过Future对象去获取任务的执行结果、获取任务执行结果时可能会造成当前线程的阻塞。2、任务的提交在执行recmdService.submit时,任务被提交到Executor框架中,进入执行,并且返回一个Future对象。可以猜想,这里肯定是生成了一个新的线程去执行任务,那么这个任务和返回的Future对象之间有什么关系,线程又是怎么生成的。下面将通过相关代码来进行分析。ThreadPoolExecutor继承自AbstractExecutorService,AbstractExecutorService实现了ExecutorService接口,实现了submit方法,仍把execute方法留待子类实现。下面来看submit方法的实现 public <T> Future<T> submit(Callable<T> task) { if (task == null) throw new NullPointerException(); RunnableFuture<T> ftask = newTaskFor(task); execute(ftask); return ftask; }protected <T> RunnableFuture<T> newTaskFor (Callable<T> callable) { return new FutureTask<T>(callable); }submit方法所做的事情其实很简单,生成了一个FutureTask对象,调用execute方法,然后返回。execute方法的执行涉及到ThreadPoolExecutor的很多细节,这里可以理解为开启一个新线程,在新线程中执行,由于这里是开启新线程后执行任务,所以,submit方法不会阻塞调用线程。由于在调用recmdFuture.get方法时会造成当前线程的阻塞,所以这里需要来关注下FutureTask的实现,是如何实现这种效果的。首先需要明确下线程的关系:a、执行任务的线程,也就是通过ThreadPoolExecutor创建的线程,任务在这个线程中执行,但我们无法获得这个线程的Thread对象b、拥有recmdFuture的线程,也就是调用Executor框架的线程,可以理解成我们的“主线程”FutureTask实现了RunnableFuture接口,只有一个Sync的属性,Sync类和属性的定义如下 private final class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = -7828117401763700385L; /** State value representing that task is running */ private static final int RUNNING = 1; /** State value representing that task ran */ private static final int RAN = 2; /** State value representing that task was cancelled */ private static final int CANCELLED = 4; /** The underlying callable */ private final Callable<V> callable; /** The result to return from get() */ private V result; /** The exception to throw from get() */ private Throwable exception; /** * The thread running task. When nulled after set/cancel, this * indicates that the results are accessible. Must be * volatile, to ensure visibility upon completion. */ private volatile Thread runner ;注意三点:Sync继承了AbstractQueuedSynchronizer ,使用了jdk的AQS线程同步框架;有一个V result属性,是用来存储任务执行完之后的结果对象;有一个Thread runner属性,用来表示执行任务的那个线程。3、任务结果的获取 由上面的分析可知,在通过Executor提交任务时,返回的其实是一个FutureTask对象。在实际中,如果任务执行的耗时较长,在调用get方法获取结果时,可能会造成线程的阻塞,如上面示例中的recmdFuture.get(10, TimeUnit. SECONDS),指定了一个最长等待时间。那么,结果是如何传递的,阻塞又是如何实现的呢? 还是来看FutureTask的get方法,这是获取任务执行结果的入口, public V get( long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { return sync.innerGet(unit.toNanos(timeout)); }通过调用Sync的innerGet来执行,下面来看实现 V innerGet(long nanosTimeout) throws InterruptedException, ExecutionException, TimeoutException { if (!tryAcquireSharedNanos(0, nanosTimeout)) throw new TimeoutException(); if (getState() == CANCELLED) throw new CancellationException(); if (exception != null) throw new ExecutionException(exception); return result; }调用了AQS的tryAcquireSharedNanos,在这里实现了调用Future的get方法的阻塞,也就是上面说的“主线程的阻塞”。但,在AQS的解析中,我们了解,这个方法并不一定会导致调用线程的阻塞(也就是进入阻塞队列中)。需要有一个线程以排他的方式占据当前的同步对象,这样其它线程在试图获取共享对象时才会被阻塞。结合对Executor框架的使用,正常情况下,只有当任务执行完成后,获取结果的线程才不会阻塞,所以我们可以猜测,这个以排他方式占据共享对象的线程就是执行任务的线程,也就是通过ThreadPoolExecutor创建的那个线程。在任务执行之前,这个线程先以排他的方式获取了共享对象,然后再任务执行完成(Callable的call方法)后,释放共享对象。FutureTask实现了RunnableFuture接口,而RunnableFuture又继承Runnable接口,也就是说FutureTask其实本身就是一个Runnable对象,也就实现了run方法。这个方法正式一个线程被启动时要执行的任务。来看FutureTask的run方法的实现 public void run() { sync.innerRun(); }run方法的执行已经是在被启动线程中,也就是和我们“主线程”不同的那个执行任务的线程,由ThreadPoolExecutor创建的线程。 void innerRun () { if (!compareAndSetState(0, RUNNING)) return; try { runner = Thread.currentThread(); if (getState() == RUNNING) // recheck after setting thread innerSet(callable.call()); else releaseShared(0); // cancel } catch (Throwable ex) { innerSetException(ex); } }首先通过CAS框架把共享对象的状态设置为RUNNING状态,实现了以排他方式获取共享对象。然后设置runner=Thread.currentThread();把runner设置为当前线程,由于线程是通过ThreadPoolExecutor创建和启动的,所以这里就是把runner对象设置为在执行任务的那个线程。调用callable.call方法执行任务,然后innerSet设置返回结果。void innerSet(V v) { for (;;) { int s = getState(); if (s == RAN) return; if (s == CANCELLED) { // aggressively release to set runner to null, // in case we are racing with a cancel request // that will try to interrupt runner releaseShared(0); return; } if (compareAndSetState(s, RAN)) { result = v; releaseShared(0); done(); return; } } }innerSet主要做三件事情:设置result字段,也就是保存任务执行的结果;设置共享对象的状态,表明任务已经执行完毕;释放共享对象,唤醒那些等待获取结果的线程。使用releaseShared的方式唤醒,是因为那些获取结果的线程都是以共享的方式阻塞在这个共享对象上(具体可以参考"共享锁和排它锁"一章),所以释放共享对象的时候,可以一次唤醒所有的等待获取结果的线程。
2023-08-17 06:58:371

entrance是什么意思

entrance英 ["entr(u0259)ns]美 ["u025bntru0259ns]n. 入口;进入vt. 使出神,使入迷[网络短语]Entrance 入口,入口处,进入main entrance 大门,主要入口,主入口entrance ticket 门票
2023-08-17 06:58:477

意大利童话: 小羊倌

  意大利是文艺复兴的发源地,也是欧洲童话的故乡,相对于风格更为浪漫轻松的其他欧洲国家的童话,意大利童话的古典意味更加强烈。下面我为大家带来意大利童话: 小羊倌,欢迎大家阅读!    意大利童话:The Little Shepherd   There was once a shepherd boy no bigger than a mite and as mean as could be On his way out to pasture one day, he passed a poultry dealer carrying a basket of eggs on her head So what did he do but throw a stone into the basket and break every single egg Enraged, the poor woman screamed a curse: "You shall get no bigger until you"ve found lovely Bargaglina of the three singing apples!"   From that time on, the shepherd boy grew thin and puny, and the more his mother attended to him, the punier he became Finally she asked, "What on earth has happened to you? Have you done a bad turn for which someone placed a curse on you?" He then told her about his meanness to the poultry dealer, repeating the woman"s words to him, "You shall get no bigger until you"ve found lovely Bargaglina of the three singing apples!"   "In that case," said his mother, "you"ve no choice but to go in search of this lovely Bargaglina"   The shepherd set out He came to a bridge, on which a little lady was rocking to and fro in a walnut shell   "Who goes there?"   "A friend"   "Lift my eyelids a little, so I can see you"   "I"m seeking lovely Bargaglina of the three singing apples Do you know anything about her?"   "No, but take this stone; it will come in handy"   The shepherd came to another bridge, where another little lady was bathing in an eggshell   "Who goes there?"   "A friend"   "Lift my eyelids a little, so I can see you"   "I"m seeking lovely Bargaglina of the three singing apples Have you any news of her?"   "No, but take this ivory comb, which will come in handy"   The shepherd put it in his pocket and walked on until he came to a stream where a man was filling a bag with fog When asked about lovely Bargaglina, the man claimed to know nothing about her, but he gave the shepherd a pocketful of fog, which would come in handy   Next he came to a mill whose miller, a talking fox, said, "Yes, I know who lovely Bargaglina is, but you"ll have difficulty finding her Walk straight ahead until you come to a house with the door open Go inside and you"ll see a crystal cage hung with many little bells In the cage are the singing apples You must take the cage, but watch out for a certain old woman If her eyes are open, that means she"s asleep If they"re closed, she"s surely awake"   The shepherd moved on He found the old woman with her eyes closed and realized she was awake "My lad," said the old woman, "glance down in my hair and see if I"ve any lice"   He looked, and as he was delousing her, she opened her eyes and he knew she had fallen asleep So he quickly picked up the crystal cage and fled But the little bells on the cage tinkled, and the old woman awakened and sent a hundred horsemen after him Hearing them almost upon him, the shepherd dropped the stone he had in his pocket It changed instantly into a steep, rocky mountain, and the horses all fell and broke their legs   Now horseless, the cavalrymen returned to the old woman, who then sent out two hundred mounted soldiers Seeing himself in new peril, the shepherd threw down the ivory comb It turned into a mountain as slick as glass, down which horses and riders all slid to their death   The old woman then sent three hundred horsemen after him, but he pulled out the pocketful of fog, hurled it over his shoulder, and the army got lost in it Meanwhile, the shepherd had grown thirsty and, having nothing with him to drink, removed one of the three apples from the cage and cut into it A tiny voice said, "Gently, please, or you"ll hurt me" Gently, he finished cutting the apple, ate one half, and put the other in his pocket At length he came to a well near his house, where he reached into his pocket for the rest of the apple In its place was a tiny, tiny lady   "I"m lovely Bargaglina," she said, "and I like cake Go get me a cake, I"m famished"   The well was one of those closed wells, with a hole in the center, so the shepherd seated the lady on the rim, telling her to wait there until he came back with the cake   Meanwhile, a servant known as Ugly Slave came to the well for water She spied the lovely little lady and said, "How come you"re so little and beautiful while I"m so big and ugly?" And she grew so furious that she threw the tiny creature into the well   The shepherd returned and was heartbroken to find lovely Bargaglina gone   Now his mother also went to that well for water, and what should she find in her bucket one day but a fish She took it home and fried it They ate it and threw the bones out the window There where they fell, a tree grew up and got so big that it shut out all the light from the house The shepherd therefore cut it down and chopped it up for firewood, which he brought inside By that time his mother had died, and he lived there all by himself, now punier then ever, since no matter what he tried, he couldn"t grow any bigger Every day he went out to the pasture and came back home at night How great was his amazement upon finding the dishes and pans he"d used in the morning all washed for him when he came home! He couldn"t imagine who was doing this At last he decided to hide behind the door and find out Whom should he then see but a very dainty maiden emerge from the woodpile, wash the dishes, sweep the house, and make his bed, after which she opened the cupboard and helped herself to a cake   Out sprang the shepherd, asking, "Who are you? How did you get in?"   "I"m lovely Bargaglina," replied the maiden, "the girl you found in your pocket in place of the apple half Ugly Slave threw me into the well, and I turned into a fish, then into fishbones thrown out the window From fishbones I changed into a tree seed, next into a tree that grew and grew, and finally into firewood you cut Now, every day while you"re away, I become lovely Bargaglina"   Thanks to the rediscovery of lovely Bargaglina, the shepherd grew by leaps and bounds, and lovely Bargaglina along with him Soon he was a handsome youth and married lovely Bargaglina They had a big feast I was there, under the table They threw me a bone, which hit me on the nose and stuck for good    意大利童话:小羊倌   从前有个小羊倌,他的个儿长得很小,很是调皮捣蛋。一天,他赶著羊去草地时,看到一个小贩头顶一篮子鸡蛋从也他身旁经过,他将一块石头扔进人家的篮子里,把鸡蛋全砸碎了。可怜的卖蛋女人气坏了,尖著嗓子诅咒说:“你呀这辈子莫想再长大了,除非你找到可爱的巴格琳娜,她有三只会 唱歌 的苹果。”   从此,小羊倌变得又瘦又小。他妈妈越是疼爱他,他越变得瘦小。最后,他妈妈问道:“你到底出了什么事?你是不是做了坏事,人家诅咒你啦?”于是,他把对卖蛋小贩恶作剧的事讲了出来,把那个女人诅咒他的话又讲了一遍:“你呀这辈子莫想再长大了,除非你找到可爱的巴格琳娜,她有三只会唱歌的苹果。”   “这样的话,”妈妈说,“你别无办法,只好去寻找可爱的巴格琳娜了。”   小羊倌离开了家。他来到一座桥上,看见一个小女人坐在榛子壳里来回地摇晃著。   “那边是谁呀?”小女人问。   “一位朋友。”   “向上拨一下我的眼皮,好让我看一看你。”   “我正在寻找有三只会唱歌的苹果的、可爱的巴格琳娜,你知道她的一点情况吗?”   “不知道,不过你可以带著这块石头,它迟早会有用的。”   羊倌又走到另一座桥边,看见一个小女人正在一个鸡蛋壳里洗澡。   “那边是谁呀?”小女人问。   “一位朋友。”   “向上拨一下我的眼皮,好让我看一看你。”   “我正在寻找有三只会唱歌的苹果的、可爱的巴格琳娜,你听说过有关她的消息吗?”   “没有。不过你可以把这把象梳子拿去,它早晚会有用的。”   羊倌把梳子装入口袋,接著继续赶路,后来走到一条小溪边,看见一个人正在将雾装入袋子。当小羊倌问这个人是否知道可爱的巴格琳娜时,他回答说一无所知,但给了小羊倌一口袋雾,说它总会有用的。   接著,他走到一座磨坊,磨坊主是一只会说话的狐狸。它说:“我知道可爱的巴格琳娜是谁,但你要找到她却十分困难。你一直朝前走,走到一所敞开著大门的房子。走进去,你就会看到一只挂著许多小铃铛的水晶鸟笼。笼子里就放著会唱歌的苹果。你要拿走这只鸟笼,可要留神看管它的老婆婆。如果她的两眼睁著,那说明她睡著了;如果她的两眼闭著,她肯定醒著。”   羊倌继续赶路。到了那里他发现老婆婆的眼睛闭著,知道她并没有睡觉。“小伙子,”老婆婆说,“低下头看看我的头发,找找里面有没有虱子。”   当羊倌低著头给她捉虱子的时候,老婆婆睁开了双眼,他知道她睡著了。他连忙拿起水晶鸟笼逃走了。可是,笼子上的小铃铛叮叮当当地响起来,老婆婆惊醒了。她派了一百名骑兵去追他。听到尾随而来的骑兵马上要追上了,小羊倌掏出口袋里的那块石头丢了出去,石头马上变成了一座陡壁悬崖的大山,追来的马全倒在地上,跌断了腿。   这些骑兵失去了马,便步行回到老婆婆那儿。接著,老婆婆又派了二百名骑兵去追赶。小羊倌眼看自己又处在危险之中,便将那一把象牙梳子扔了出去,它变成了一座象玻璃山一样光滑的高山,那些马和骑兵全都滑下来摔死了。   接著,老婆婆又派了三百名骑兵去追赶。小羊倌又掏出那一口袋雾来,向身后猛掷出去,这支三百人的骑兵队全都被大雾迷住了,失去了方向。跑了这么一阵子,羊倌感到口渴,但身边没有什么可解渴的东西,便将鸟笼中的三只苹果拿出一只来,准备切开。这时他听到一个细微的声音说道:“请轻轻切,否则你要刺伤我啦。”他轻轻切开苹果,吃了一半,将另一半装到口袋里。最后,他来到自己家附近的一口井旁,伸手去摸口袋里的一半苹果,却掏出来一个很小、很小的小姑娘。   “我就是可爱的巴格琳娜,”她说,“我喜欢吃饼,去给我拿只饼来,我饿极啦。”   这口井的井口加了盖,中间有一个圆洞可以汲水。羊倌让小姑娘坐在井边上,叫她等著,自己便去拿饼了。   这时,一个大家叫做“丑奴隶”的仆人前来打水。她发现这个小姑娘,便说:“你怎么会长得这么小巧、这么漂亮,而我却生得这么粗、这么丑呢?”她越说越生气,竟把这个小东西扔进了井里。   羊倌回来后发现可爱的巴格琳娜不见了,他的心都碎啦。   小羊倌的母亲也是在这口井里打水用的。有一天,她发现自己的桶里有一条鱼。她把鱼拿回家,用油煎好。他们母子吃了鱼,把骨头丢在窗外。后来,丢鱼骨头的地方长出一棵树来,它长得很高大,把整所房子的光线都挡住了。于是,羊倌把树砍倒,劈成木柴后搬到家里。那时,他的母亲已经去世,羊倌独自一人住在这儿。如今,他比以往更瘦小了,不管怎么想方设法,他总是长不大。他每天外出放羊,晚上回家。可是他每天回到家里时,发现早晨用过的锅碗瓢勺都已洗好了,这是多么令人惊奇的事啊!他想不出是谁帮他做的这些。最后,他决定藏在门后观察一下。这时,他看到的却是一位秀丽的姑娘从柴堆里鉆出来,洗锅碗,打扫房间,叠被子,然后她打开食橱,拿出一只饼来吃。   小羊倌从门后猛地跳出来,问道:“你是谁?怎么进到房间里来的?”   “我就是可爱的巴格琳娜,”姑娘回答,“就是你掏那半只苹果时看到的那个姑娘。u2018丑奴隶u2019把我扔进井里,我变成了鱼,接著又变成鱼骨头被丢在窗外。我又从鱼骨头变成树种,破土而出变成树,一个劲儿地往上长,最后又变成了你所劈的木柴。如今,你每天外出的时候,我就变成了可爱的巴格琳娜。”   由于重新找到了可爱的巴格琳娜,羊倌的身个儿飞快地向上长,可爱的巴格琳娜也跟他一起长大了。不久,羊倌就成了一位漂亮的年轻人,跟可爱的巴格琳娜结了婚。他们举行了盛大的庆祝宴会。当时我也在场,是在桌子底下。他们丢给我一块骨头,正巧打在我的鼻子上,从此它就粘在那儿永远掉不下来了。    结束语:   意大利童话中对于真理、正义、善良、慷慨、真诚、勤劳、勇敢等优秀品质的拥护和赞颂更加热情,同时对于虚伪、邪恶、凶残、贪婪、狡猾、懒惰、怯懦等丑陋品质的憎恶和谴责也更加严厉。民间色彩也更加浓厚,读来别有一番风味。以上的意大利经典 童话 故事 希望大家喜欢!
2023-08-17 06:50:141

《使命召唤6现代战争2》中BOSS谢菲尔德全名叫什么?

这都不知道……Price不是说过了吗……他叫German Sherpherd……虽然原意是德国牧羊犬………………
2023-08-17 06:50:242

去日本旅游需要准备些什么?越具体越好啊!!

办理出国手续应注意的若干问题 一、出国事由与护照。公民因私事出国的事由是指:定居、探亲、访友、留学、就业、旅游和从事商务等其他非公务活动。虽然事由不尽相同,但是申请获得的护照却是一样的。各种事由的区别,仅仅体现在出境登记卡上的出境事由。除了出国定居的以外,其他各项出境事由一律注明“短期出境”。换句话说,“短期出境”代表了探亲、访友、留学、就业、旅游和从事商务活动等一切事由。为此,“留学护照”、“旅游护照”和“商务护照”等等的说法是不准确的。 在此顺便说一句,护照的有效期限为5年,可以延期2次,每次5年。在持用护照期间,应该随时注意护照的有效期限。即使持用过期一天的护照出境或者入境,也会被边防检查人员毫不留情地阻止出境或者入境。 二、申请办理护照的时间。申请办理护照,除因特殊紧急情况可以申请5个工作日加急手续外,其他一律为14个工作日。14个工作日,实际可能是20 天左右。一些申请人由于没有提前计划,到时候又会觉得20天时间太长了或者感觉办护照太费用。其实参照下列方法,可以既方便又快捷。其一,在星期六或者中午到位于东城区安定门东大街2号的北京市公安局出入境管理处办理出入境手续。其二,在公安分县局出入境管理部门和300余个户籍派出所领取申请表及办证须知。如居住在延庆、密云等地的人员,就近领取申请表可能仅需要几十分钟,而到北京市公安局出入境管理处可能就需要几个小时,甚至一天的时间。其三,提前准备。出国旅游要求出具申请人名下4000美元等值的国际流通货币的存款证明。没有外汇存款证明,还可以参加旅行社组织的出国旅行团。所以说,有了存款或者准备了出国旅游的费用,就具备了出国旅游申请办理护照的条件。想在元旦、春节、五一和十一出国旅游,提前几个月申请,然后办签证,时间就十分充裕了,不必到时手忙脚乱的。而且错开高峰期,在申请时还可以节省排队等候的时间或者因旅行团名额所限不能成行。出国旅游如此,出国留学也可以早做准备。出国留学的必备条件之一是要有相当数额的外汇,这样就可以先办护照。因为在《录取通知书》上没有明确注明开学日期的,不能申请办理加急手续。出国留学申请办理加急的条件是“开学时间不足一个月的”。 三、照片的规格要求。在申请表上的相应位置,需要贴上一张近期直边正面免冠证件照片一张。照片应是光面相纸,背景颜色为白色或者淡兰色(着白色服装时必须是淡兰色背景)。公职人员不着制式服装,儿童不系红领巾。一次性快照、翻拍的照片或者彩色打印机打印的照片不符合规格要求。 呈交申请表后,需要持《因私出境证件申请回执》和本人身份证在接待大厅拍摄护照专用照片。为此,申请人在申请办理时,应该注意所穿的服饰和仪表。否则,还要往返换衣服或者理发。另外,在接待大厅拍摄的护照照片,不能提供给申请人。 四、填写申请表。填写申请表必须使用黑色或者蓝黑墨水,禁止使用天蓝、绿色或者红色墨水。申请表上的字迹要清楚、整洁,不准涂改。
2023-08-17 06:50:031

光纤激光喷码机是用什么样的软件喷码的?喷码过程是什么样的啊

你好,麦太尔机电为您解答,在激光打码机软件内打好文字后,选择文字,删除填充,选择文字,编辑,转为曲线,选择分离组合,选择填充(此时,注意线间距设定为0.01或者0.02)
2023-08-17 06:50:032